Asignación a Listas y Asignación a Arrays

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  9
Sin 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
Licencia de Creative Commons
Principios de Programación Imperativa, Funcional y Orientada a Objetos Una Introducción en Perl/Una Introducción a Perl
por Casiano Rodríguez León is licensed under a Creative Commons Reconocimiento 3.0 Unported License.

Permissions beyond the scope of this license may be available at http://campusvirtual.ull.es/ocw/course/view.php?id=43.
2012-06-19