PERL soporta una gran cantidad de operadores, la mayoría de ellos heredados del lenguaje C. En PERL los operadores conservan el mismo uso que en el resto de los lenguajes, y se utilizan para realizar operaciones aritméticas, operaciones lógicas ..., entre las variables del programa. Los operadores pueden clasificarse en los siguientes tipos:
- Operadores de comparación: mediante estos operadores podemos enfrentar dos expresiones, de manera que dependiendo de su valor se generará un resultado que puede ser lógico o numérico. PERL tiene los siguientes operadores de comparación:
- . Este operador sirve para comparar dos valores iguales, de manera que cuando las expresiones a su izquierda y su derecha son iguales, devuelve un valor lógico verdadero y cuando no lo son devuelve falso: if ($var
3) { ...}en el caso de que el contenido de la variable sea tres se realizan las operaciones entre paréntesis.
- eq. Es empleado para comparar expresiones no numéricas, esto es, se utiliza de igual manera que
pero para cadenas.
- !=. Con este operador se comparan cantidades numéricas diferentes. if ($var != 3) { ...}si los valores son diferentes se ejecutan la instrucciones entre llaves.
- ne. Se utiliza para comparar cantidades no numéricas diferentes. Su funcionamiento es similar que el de !=.
;
- <. Verifica el valor de una cantidad numérica con repecto del valor de la expresión de la derecha, de modo que si el valor de esta expresión es mayor que el de la cantidad numérica se devuelve cierto, en caso contrario se devuelve falso: if ($var < 3) { ...}ejecuta las instrucciones entre paréntesis si el valor de var es menor que tres.
- >. Verifica el valor de una cantidad numérica con repecto del valor de la expresión de la derecha, de modo que si el valor de esta expresión es menor que el de la cantidad numérica se devuelve cierto, en caso contrario se devuelve falso: if ($var > 3) { ...}ejecuta las instrucciones entre parentesis si el valor de var es mayor que tres. Los operadores para los terminos menor o igual y mayor o igual son <= y >= respectivamente, y en ambos casos además de el significado de cada término explicado anteriormente, se devuelve cierto si las expresiones son iguales.
Como en el caso de las operaciones anteriores, existen equivalentes que se utilizan con las cadenas no númericas para los terminos
< y
>. Estos operadores son:
ltque devuelve cierto si el orden de la cadena de la izquierda es menor que el de la cadena de la derecha, y
gt que devuelve cierto si la cadena de la izquierda es mayor que el orden de la cadena de la derecha.
- cmp. Este termino es utilizado para comparar caracteres, de manera que, retorna 0 si los caracteres comparados son iguales, 1 si la cadena de la derecha se encuentra al comienzo de la de la izquierda, y -1 en el caso contrario: 'one' cmp 'one'
DEVUELVE 0
'one dog ' cmp 'one'
DEVUELVE 1
'dog one' cmp 'one'
DEVUELVE -1
'es diferente' cmp 'one'
DEVUELVE -1
- <=>. Este termino se utiliza para comparar valores numéricos, retornando 0 cuando son iguales, 1 cuando el termino de la derecha es menor que el de la izquierda y -1 en el caso contrario.
- =~ . Este termino es usado en las expresiones regulares para indicar la presencia de un patrón de comparación dentro de una variable que contiene una cadena de caracteres: if ($var =~/pepe/) { ...}verifica si la cadena 'pepe' se encuentra dentro de var y si es así, ejecuta el código entre llaves.
- !~. Mediante este operador se verifica la no existencia del patrón de búsqueda en una cadena: if ($var !~/pepe/) { ...}si la cadena 'pepe' no esta en var se ejecuta el código entre llaves.
- Operadores de asignación: los terminos de asignación se utilizan en PERL para dar valores a cualquiera de las variables validas en PERL. Existen en Perl los siguientes operadores de asignación:
- =. Con este termino se asigna a la variable que se encuentra a la izquierda del operador el valor de la expresión de la derecha. Asi mediante este valor se pueden dar valores iniciales a cualquier variable: $var = 'Buenos dias';asigna la cadena 'Buenos dias' a la variable var.
- =~. A parte de la función de verificación de existencia de un patrón dentro de una cadena que anteriormente se explicó, este operador dentro de una expresión regular de sustitución se utiliza para sustituir un patrón de comparación por otra cadena: $var =~ s/one/uno/;se reemplaza la ocurrencia de la cadena 'one' por la cadena 'uno'.
- Operadores aritméticos: Mediante estos terminos se realizan las operaciones aritméticas necesarias para el manejo de las expresiones. A parte de los operadores aritméticos comunes; +(suma), -(resta), *(multiplicación) y /(división), PERL también incluye los siguientes operadores:
- . Este término se emplea para obtener la potencia de un valor numérico, ejemplo : $var = 6;
$var2;el valor almacenado en var es 36.
- . ;Este término se emplea para concatenar dos cadenas de caracteres, ejemplo: $var = 'Juan ';
$var . 'Ramirez';var contendrá la cadena Juan Ramirez.
- x. Este término multiplica n veces la cadena de caracteres especificada, ejemplo : 'd' x 20;expresa una cadena de 20 caracteres d.
- %, Permite obtener el módulo de la división entre dos números, ejemplo : $var = 5 % 2;el valor que se asigna a var es 1.
- |. Este término cuando se emplea entre 2 valores numéricos, permite realizar una operación binaria 'o' entre ellos, ejemplo $var = 3 | 2;el valor que se asigna a la variable es 3.
- &, Este término cuando se emplea entre 2 valores numéricos, permite realizar una operación binaria 'y' entre ellos, ejemplo : $var = 3 & 2;el valor asignado es 2.
El operador de asignación
= está muy relacionado con los operadores aritméticos de modo que PERL permite que se combinen ambos siguiendo este formato general:
$variable (operador aritmetico)= expresión;En general lo que se consigue con este formato es realizar la operación aritmetica, y posteriormente asignar el valor a la variable. Así aquí vemos algunos ejemplos de esta combinación: $var = 5;
$var += 6;después de esta asignación el valor de var sera 11 (ha sumado 6 al valor anterior de la variable y posteriormente ha asignado el resultado). $var = 5;
$var %= 2;el valor actual de la variable sera 1.
- Operadores lógicos o relacionales: permiten relacionar dos o más expresiones condicionales para determinar si el resultado lógico es falso o cierto. Estos son los diferentes operadores lógicos que emplea PERL:
- |. Este operador se utiliza en las expresiones regulares como operador lógico 'o', de modo que retorna cierto siempre que cualquiera de los patrónes de busqueda que componen la expresión sea cierto y falso cuando los dos son falsos. Por ejemplo if ($var !~/pepe | juan/) { ...}el código entre llaves se ejecuta si en la cadena que se encuentra dentro de la varible existe una ocurrencia igual a 'pepe' o igual a 'juan'.
Además de utilizarse dentro de las expresiones regulares, también se utiliza para unir mediante la operación 'o' dos expresiones condicionales. Así por ejemplo:
if ($var
6 | $var < 3) { ...}ejecuta el código entre llaves si la variable es igual a 6 o menor que 3.
- ||. También representa la operación lógica 'o' pero en este caso se utiliza sobre instrucciones no sobre expresiones.
- &. Este operador trabaja como un operador lógico 'y' en expresiones regulares, permite confrontar 2 patrones, de modo que para que se produzca un valor cierto se tiene que cumplir la existencia de ambos en la cadena donde se realiza la comparación, en el caso contrario el valor devuelto es falso, ejemplo: if ($var =~ /coche & moto/) { ...}el código entre parentesis se ejecuta si dentro de la variable existe una ocurrencia de la cadena 'coche' y otra de la cadena 'moto'. Como en el caso del operador | también se utiliza para relaccionar expresiones condicionales.
- &&. Al igual que el operador anterior trabaja como un operador lógico 'y', pero con la diferencia de que este operador se emplea sobre instrucciones y no sobre expresiones regulares.
- !. Con este operador realizamos una evaluación negativa de la expresión, ejemplo: if (!$var) { ...}el código entre llaves se ejecuta si la variable var es nulo o 0.
- Operadores de Archivo: estos operadores se emplean para verificar en el sistema operativo los permisos de un archivo, o su naturaleza de ejecución, etc. A continuación se muestra los diferentes operadores:
- -r : indica si el archivo tiene permiso de lectura.
- -W : indica si el archivo tiene permiso de escritura.
- -T : indica si el archivo es de tipo texto.
- -e : indica si el archivo existe.
- -z : indica si el archivo tiene tamaño 0.
- -s : indica si el archivo es mayor que 0.
- -f : indica si el archivo es plano.
- -d : indica si se trata de un directorio.
- -M : indica el número dias después de la última modificación
- -B : indica si el archivo es binario.
- -t : indica si el archivo esta abierto en un terminal.