Se puede asignar listas de valores a listas de variables:
($a, $b) = ($b, $a);que intercambia los valores de
$a
y $b
.
En una Asignación a una lista, si hay mas variables en la lista que
elementos en la parte derecha , las variables
extra quedan indefinidas (undef
). Si por el contrario hay menos variables
que elementos en la parte derecha, los elementos extra son ignorados.
Veamos un ejemplo:
lhp@nereida:~/Lperl/src$ perl -wde 0 main::(-e:1): 0 DB<1> @a = 1..3 DB<2> @b = 1..5 DB<3> ($a,$b) = @a DB<4> x ($a,$b) 0 1 1 2 DB<5> ($c,$b,$a) = (2,7) DB<6> x ($c,$b,$a) 0 2 1 7 2 undef DB<7> ($c,$b,$a) = (2,7,9,12,@b) DB<8> x ($c,$b,$a) 0 2 1 7 2 9Sin embargo si la parte izquierda es un array, la variable se hace igual a la lista que esta en la parte derecha:
DB<9> @b = reverse @a DB<10> x @b 0 3 1 2 2 1
Casiano Rodríguez León