Funciones sobre cadenas

Las cadenas de caracteres en Perl, como sabéis, las manejamos como variables escalares y tienen también unas cuantas funciones específicas asociadas.

substr
Devuelve una subcadena de la cadena pasada como parámetro. Puede recibir dos o tres parámetros. El primero es una cadena, el segundo el punto ( offset , empezando en el 0) donde empieza la nueva subcadena y el tercero, opcional, la longitud de la subcadena a partir del punto anterior.

my $cadena = "cadena";
my $subcadena = substr($cadena,0,4); # $subcadena contiene "cade";
$subcadena = substr($cadena,1,4); # $subcadena contiene "aden";
$subcadena = substr($cadena,2); # $subcadena contiene "dena";

index
Devuelve la posición de una subcadena dentro de una cadena, el valor devuelto en caso contrario es -1. Puede recibir un tercer parámetro opcional que marca en qué posición debe empezar la búsqueda.

my $cadena = "cadena";
my ($subc1,$subc2) = ('en','no');
print index($cadena,$subc1); # imprime 3
print index($cadena,$subc1,4); # imprime -1
print index($cadena,$subc2); # imprime -1

length
Devuelve la longitud de una cadena de caracteres.
print length("cadena"); # imprime 6

chomp
Elimina el último terminador de línea (símbolo de nueva línea) \n de una cadena y devuelve 1 si de hecho lo eliminó. Se puede aplicar también a un arreglo de cadenas.

my $cadena = "cadena\n";
my @cadenas=("cadena1\n","cadena2\n");
print chomp($cadena);                     # imprime 1
print chomp(@cadenas);                    # imprime 2

lc, uc
Devuelven versiones en mayúsculas ( upper case , uc) o minúsculas ( lower case , lc) de la cadena pasada como parámetro.

my $cadena = "May y min";
print lc($cadena);                        # imprime 'may y min'
print uc($cadena);                        # imprime 'MAY Y MIN'

split
Función que recibe un patrón regular y una cadena y trata de extraer las diferentes subcadenas que haya separadas por tal patrón, devolviéndolas en un arreglo. Se puede pasar un tercer parámetro que indica el número máximo de subcadenas deseadas.

my $cadena = "cadena de caracteres|otra cadena\n";

my @subcadenas1 = split(/\s+/,$cadena);
my @subcadenas2 = split(/\|/,$cadena); # separa por el carácter '|'

print scalar(@subcadenas1);   # contiene 4 elementos
print scalar(@subcadenas2);   # contiene 2 elementos

Bruno Contreras-Moreira
http://www.eead.csic.es/compbio