Operadores de Comparación

Perl tiene dos conjuntos de operadores de comparación: uno para los números y otros para las cadenas. Los operadores de cadenas se componen de letras (estilo FORTRAN) mientras que los numéricos siguen el estilo C.


Tabla: Operadores de Comparación
Comparación Numerico Cadena
Igual == eq
distinto != ne
Menor que < lt
mayor que > gt
Menor o igual que <= le
Mayor o igual que >= ge
Comparación <=> cmp


La comparación entre cadenas sigue el orden lexicográfico.

'a' lt 'z' # TRUE
0 < 5 # TRUE
"H" cmp "He" # -1 operador de comparacion (0 si =, 1 si $a>$b, -1 si $a<$b)
10 <=> 8.5   #  1 el operador "guerra de las galaxias"
             #  <=> Darth Vader's fighter!
Los operadores de comparación de cadenas no deberían usarse para números, salvo que sea eso precisamente lo que se quiere (esto es, 10 va antes de 2). Analogamente, los operadores de comparación de números no deberían usarse para cadenas:
"a" == "b" # TRUE, ambas cadenas como números son 0

Casiano Rodríguez León
2010-03-03

        [^0-9]         # Carácter que no sea un dígito

Perl introduce algunas abreviaturas usadas para algunas de las clases mas comunes:


Tabla 1.4: Abreviaturas para clases expreg
Código Significado
\d [0-9] dígitos del 0 al 9
\D [^0-9] carácter que no sea un dígito
\w [a-zA-Z0-9_] carácter alfanumérico
\W [^a-zA-Z0-9_] carácter no alfanumérico
\s [ \t\n\r\f] espacio en blanco
\S [^ \t\n\r\f] carácter que no es un espacio en blanco


Paréntesis con memoria

Después de una operación de matching lo que casó con el primer paréntesis se conserva en la variable $1, lo que casó con el segundo en $2, etc.

Véase el siguiente ejemplo en el que se imprime lo que casó con los paréntesis décimo, undécimo, etc.:

lusasoft@LusaSoft:~$ perl -wde 0
main::(-e:1):   0
  DB<1> $x = "hello world!\n"
  DB<2> $x =~ /(h)(e)(l)(l)(o)( )(w)(o)(r)(l)(d)(!)(\n)/; print "$10 $11 $12 $13"
l d !



Subsecciones
Casiano Rodríguez León
2011-02-09