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).