Como la mayoría de lenguajes de programación, Perl tiene los operadores numéricos básicos:
+ para la suma, - para la resta, * para la multiplicación, / para la división:
use strict;
use warnings;
use 5.010;
say 2 + 3; # 5
say 2 * 3; # 6
say 9 - 5; # 4
say 8 / 2; # 4
say 8 / 3; # 2.66666666666667
Perl usa automáticamente números en coma flotante cuando es necesario, por lo que al dividir 8 entre 3 obtenemos un valor en coma flotante.
El operador modulo % devuelve el resto de la división entera:
use strict;
use warnings;
use 5.010;
say 9 % 2; # 1
say 9 % 5; # 4
Estos mismos operadores numéricos también se pueden usar sobre variables escalares (en):
use strict;
use warnings;
use 5.010;
my $x = 2;
my $y = 3;
say $x + $y; # 5
say $x / $y; # 0.666666666666667
Asignaciones compuestas
La expresión $x += 3; es la versión abreviada de $x = $x + 3;, ambas producen
exactamente el mismo resultado:
use strict;
use warnings;
use 5.010;
my $x = 2;
say $x; # 2
$x = $x + 3;
say $x; # 5
my $y = 2;
say $y; # 2
$y += 3;
say $y; # 5
En general, VARIABLE OP= EXPRESION es lo mismo que
VARIABLE = VARIABLE OP EXPRESION, normalmente es más fácil de leer y menos proclive a errores (No tenemos que repetir el nombre de la VARIABLE)
Este tipo de asignación compuesta se puede utilizar con cualquier operador binario:
+=, *=, -=, /=, incluso %=
Auto incremento y auto decremento
Perl también proporciona los operadores ++ y -- para auto incremento y auto decremento. Estos operadores incrementan y decrementan respectivamente el valor de una variable escalar por 1.
use strict;
use warnings;
use 5.010;
my $x = 2;
say $x; # 2
$x++;
say $x; # 3
$x--;
say $x; # 2
Tanto las versiones postfijas $x++ y $x--, como las versiones prefijas
++$x y --$x están disponibles y funcionan de la misma manera que en
otros lenguajes de programación.
En caso de que no las conozcas, no es el mejor momento para explorarlas a fondo.
Cuando se usan dentro de una expresión más grande es cuando usar operadores prefijos o postfijos realmente importa. En la mayoría de los casos es mejor evitar esas expresiones, pueden provocar dolores de cabeza fácilmente. Tendremos un articulo explicando los corto circuitos en expresiones booleanas y los problemas con auto incrementos.
Adicionalmente, el operador de auto incremento también funciona con strings como se explica en string operators (en).