Operadores Perl
Un operador es un símbolo que le indica al compilador ejecutar operaciones matemáticas o lógicas específicas, como: 3+2=5.
El lenguaje Perl tiene incorporados una gran cantidad de operadores; veamos algunos de los más utilizados:
- Operadores aritméticos
- Operadores de comparación
- Operadores lógicos
- Operadores de asignación
- Operadores de bits
- Operadores de comillas
- Otros operadores
- Precedencia de operadores
Operadores aritméticos
En los ejemplos de la tabla establecemos la variable $a como 10 y $b como 20.
| Operador | Descripción | Ejemplo |
|---|---|---|
| + | Suma | $a + $b da como resultado 30 |
| - | Resta | $a - $b da como resultado -10 |
| * | Multiplicación | $a * $b da como resultado 200 |
| / | División | $b / $a da como resultado 2 |
| % | Operación de módulo, el resto de la división entera | $b % $a da como resultado 0 |
| ** | Exponenciación | $a**$b da como resultado 10 elevado a la 20 |
Ejemplo
La salida de la ejecución del programa anterior es:
$a = 10 , $b = 20 $a + $b = 30 $a - $b = -10 $a * $b = 200 $a / $b = 0.5 $a % $b = 10 $a ** $b = 16
Operadores de comparación
En los ejemplos de la tabla establecemos la variable $a como 10 y $b como 20.
| Operador | Descripción | Ejemplo |
|---|---|---|
| == | Comprueba si los valores de dos operandos son iguales; si son iguales, la condición es true; de lo contrario, es false. | ($a == $b) es false |
| != | Comprueba si los valores de dos operandos son iguales; si no son iguales, la condición es true; de lo contrario, es false. | ($a != $b) es true. |
| <=> | Compara los valores de dos operandos; si el número de la izquierda es menor que el de la derecha, devuelve -1; si son iguales, devuelve 0; si el número de la izquierda es mayor que el de la derecha, devuelve 1. | ($a <=> $b) devuelve -1. |
| > | Comprueba si el valor del operando izquierdo es mayor que el valor del operando derecho; si es así, la condición es true; de lo contrario, es false. | ($a > $b) devuelve false. |
| < | Comprueba si el valor del operando izquierdo es menor que el valor del operando derecho; si es así, la condición es true; de lo contrario, devuelve false. | ($a < $b) devuelve true. |
| >= | Comprueba si el valor del operando izquierdo es mayor o igual que el valor del operando derecho; si es así, la condición es true; de lo contrario, devuelve false. | ($a >= $b) devuelve false. |
| <= | Comprueba si el valor del operando izquierdo es menor o igual que el valor del operando derecho; si es así, la condición es true; de lo contrario, devuelve false. | ($a <= $b) devuelve true. |
Ejemplo
La salida de la ejecución del programa anterior es:
$a = 10 , $b = 20 $a == $b 结果 false $a != $b 结果 true $a <=> $b 返回 -1 $a > $b 结果 false $a >= $b 结果 false $a < $b 结果 true $a <= $b 结果 true
En los ejemplos de la siguiente tabla establecemos la variable $a como "abc" y $b como "xyz", y luego usamos operadores de comparación para calcular el resultado.
| Operador | Descripción | Ejemplo |
|---|---|---|
| lt | Comprueba si la cadena de la izquierda es menor que la de la derecha; si es así, devuelve true; de lo contrario, devuelve false. | ($a lt $b) devuelve true. |
| gt | Comprueba si la cadena de la izquierda es mayor que la de la derecha; si es así, devuelve true; de lo contrario, devuelve false. | ($a gt $b) devuelve false. |
| le | Comprueba si la cadena de la izquierda es menor o igual que la de la derecha; si es así, devuelve true; de lo contrario, devuelve false. | ($a le $b) devuelve true |
| ge | Comprueba si la cadena de la izquierda es mayor o igual que la de la derecha; si es así, devuelve true; de lo contrario, devuelve false. | ($a ge $b) devuelve false. |
| eq | Comprueba si la cadena de la izquierda es igual a la de la derecha; si es así, devuelve true; de lo contrario, devuelve false. | ($a eq $b) devuelve false. |
| ne | Comprueba si la cadena de la izquierda es diferente de la de la derecha; si es así, devuelve true; de lo contrario, devuelve false. | ($a ne $b) devuelve true |
| cmp | Si la cadena de la izquierda es mayor que la de la derecha, devuelve 1; si son iguales, devuelve 0; si la cadena de la izquierda es menor que la de la derecha, devuelve -1. | ($a cmp $b) devuelve -1. |
Ejemplo
La salida de la ejecución del programa anterior es:
$a = abc ,$b = xyz abc lt $b 返回 true $a gt $b 返回 false $a le $b 返回 true $a ge $b 返回 false $a ne $b 返回 true $a cmp $b 返回 -1
Operadores de asignación
En los ejemplos de la tabla establecemos la variable $a como 10 y $b como 20.
| Operador | Descripción | Ejemplo |
|---|---|---|
| = | Operador de asignación simple: asigna el valor del operando derecho al operando izquierdo. | $c = $a + $b asignará el valor de $a + $b a $c. |
| += | Operador de suma y asignación: asigna al operando izquierdo el resultado de sumar el operando derecho al operando izquierdo. | $c += $a es equivalente a $c = $c + $a |
| -= | Operador de resta y asignación: asigna al operando izquierdo el resultado de restar el operando derecho al operando izquierdo. | $c -= $a es equivalente a $c = $c - $a |
| *= | Operador de multiplicación y asignación: asigna al operando izquierdo el resultado de multiplicar el operando derecho por el operando izquierdo. | $c *= $a es equivalente a $c = $c * $a |
| /= | Operador de división y asignación: asigna al operando izquierdo el resultado de dividir el operando izquierdo entre el operando derecho. | $c /= $a es equivalente a $c = $c / $a |
| %= | Operador de módulo y asignación: asigna al operando izquierdo el módulo de los dos operandos. | $c %= $a es equivalente a $c = $c % a |
| **= | Operador de exponenciación y asignación: asigna al operando izquierdo la potencia de los dos operandos. | $c **= $a es equivalente a $c = $c ** $a |
Ejemplo
La salida de la ejecución del programa anterior es:
$a = 10 ,$b = 20 赋值后 $c = 30 $c = 40 ,运算语句 $c += $a $c = 30 ,运算语句 $c -= $a $c = 300 ,运算语句 $c *= $a $c = 30 ,运算语句 $c /= $a $c = 0 ,运算语句 $c %= $a $a = 4 , $c = 2 $c = 16 ,运算语句 $c **= $a
Operaciones de bits
Los operadores de bits actúan sobre los bits y realizan las operaciones bit a bit.
Establezcamos $a = 60 y $b = 13. Ahora, representados en formato binario, son los siguientes:
$a = 0011 1100 $b = 0000 1101 ----------------- $a&$b = 0000 1100 $a|$b = 0011 1101 $a^$b = 0011 0001 ~$a = 1100 0011
Los operadores de bits admitidos por Perl se muestran en la siguiente tabla:
| Operador | Descripción | Ejemplo |
|---|---|---|
| & | Si el bit está presente en ambos operandos, el operador AND binario copia un bit al resultado. | ($a & $b) dará 12, en binario 0000 1100 |
| | | Si el bit está presente en cualquiera de los operandos, el operador OR binario copia un bit al resultado. | ($a | $b) dará 61, en binario 0011 1101 |
| ^ | Si el bit existe en uno de los operandos pero no en ambos, el operador binario XOR copia un bit al resultado. | ($a ^ $b) dará 49, en binario 0011 0001 |
| ~ | El operador de complemento a uno binario es un operador unario que tiene el efecto de "invertir" los bits, es decir, 0 se convierte en 1 y 1 se convierte en 0. | (~$a ) dará -61, en binario 1100 0011, la forma de complemento a uno de un número binario con signo. |
| << | El operador de desplazamiento a la izquierda binario. El valor del operando izquierdo se desplaza a la izquierda la cantidad de bits especificada por el operando derecho. | $a << 2 dará 240, en binario 1111 0000 |
| >> | El operador de desplazamiento a la derecha binario. El valor del operando izquierdo se desplaza a la derecha la cantidad de bits especificada por el operando derecho. | $a >> 2 dará 15, en binario 0000 1111 |
Ejemplo
La salida de la ejecución del programa anterior es:
$a = 60 , $b = 13 $a & $b = 12 $a | $b = 61 $a ^ $b = 49 ~$a = -61 $a << 2 = 240 $a >> 2 = 15
Operadores lógicos
Los operadores lógicos de Perl se muestran en la siguiente tabla.
En los ejemplos de la tabla, establecemos la variable $a como true y $b como false.
| Operador | Descripción | Ejemplo |
|---|---|---|
| and | Operador Y lógico. Si ambos operandos son true, la condición es true. | ($a and $b) es false. |
| && | Operador Y lógico de estilo C. Si ambos operandos son true, la condición es true. | ($a && $b) es false. |
| or | Operador O lógico. Si cualquiera de los dos operandos es distinto de cero, la condición es true. | ($a or $b) es true. |
| || | Operador O lógico de estilo C. Si cualquiera de los dos operandos es distinto de cero, la condición es true. | ($a || $b) es true. |
| not | Operador NO lógico. Se usa para invertir el estado lógico del operando. Si la condición es true, el operador NO lógico la convierte en false. | not($a and $b) es true. |
Ejemplo
La salida de la ejecución del programa anterior es:
$a = true , $b = false $a and $b = false $a && $b = false $a or $b = true $a || $b = true not($a)= 1
Operadores de comillas
Los operadores de comillas de Perl se muestran en la siguiente tabla.
| Operador | Descripción | Ejemplo |
|---|---|---|
| q{ } | Agrega comillas simples a una cadena | q{abcd} da como resultado 'abcd' |
| qq{ } | Agrega comillas dobles a una cadena | qq{abcd} da como resultado "abcd" |
| qx{ } | Agrega comillas invertidas a una cadena | qx{abcd} da como resultado `abcd` |
Ejemplo
La salida de la ejecución del programa anterior es:
q{a = $a} = a = $a
qq{a = $a} = a = 10
qx{date} = 2016年 6月10日 星期五 16时22分33秒 CST
Otros operadores
Además de los operadores que hemos mencionado anteriormente, Perl también admite los siguientes operadores:
| Operador | Descripción | Ejemplo |
|---|---|---|
| . | El punto (.) se usa para concatenar dos cadenas. | Si $a="run", $b="oob", $a.$b da como resultado "ejemplo" |
| x | El operador x devuelve la cantidad de veces que se repite una cadena. | ('-' x 3) produce ---. |
| .. | .. es el operador de rango. | (2..5) produce como resultado (2, 3, 4, 5) |
| ++ | Operador de incremento, aumenta el valor entero en 1 | $a =10, $a++ produce 11 |
| -- | Operador de decremento, disminuye el valor entero en 1 | $a =10, $a-- produce 9 |
| -> | La flecha se usa para especificar un método de una clase | $obj->$a representa el método $a del objeto $obj. |
Ejemplo
La salida de la ejecución del programa anterior es:
$a = run , $b = oob $a . $b = ejemplo "-" x 3 = --- (2..5) = 2 3 4 5 $a = 10 , $b = 15 $a 执行 $a++ = 11 $b 执行 $b-- = 14
Precedencia de operadores
La siguiente tabla enumera la precedencia de operadores del lenguaje Perl:
| Operador | Asociatividad |
|---|---|
| ++, -- | Ninguno |
| -, ~, ! | De derecha a izquierda |
| ** | De derecha a izquierda |
| =~, !~ | De izquierda a derecha |
| *, /, %, x | De izquierda a derecha |
| +, -, . | De izquierda a derecha |
| <<, >> | De izquierda a derecha |
| -e, -r, | Ninguno |
| <, <=, >, >=, lt, le, gt, ge | De izquierda a derecha |
| ==, !=, <=>, eq, ne, cmp | De izquierda a derecha |
| & | De izquierda a derecha |
| |, ^ | De izquierda a derecha |
| && | De izquierda a derecha |
| || | De izquierda a derecha |
| .. | De izquierda a derecha |
| ? and : | De derecha a izquierda |
| =, +=, -=, *=, | De derecha a izquierda |
| Otros | |
| , | De izquierda a derecha |
| not | De izquierda a derecha |
| and | De izquierda a derecha |
| or, xor | De izquierda a derecha |
Ejemplo
La salida de la ejecución del programa anterior es:
$a = 20, $b = 10, $c = 15 ,$d = 5 ($a + $b) * $c / $d = 90 (($a + $b) * $c) / $d = 90 ($a + $b) * ($c / $d ) = 90 $a + ($b * $c )/ $d = 50Otras extensiones