¿Que efecto tiene el siguiente código?:
@text = (1, 2, 3, 4, 5); @text[@text] = 0;¿En que contexto se interpreta el
array @text
que aparece dentro del corchete? ¿Escalar o
lista?
Respuesta:
El array text
entre corchetes es interpretado en un contexto de lista, pues no dice
$text[@text]
, dice @text[@text]
. El resultado es un trozo con 5 elementos.
Por tanto dice:
@text[(1, 2, 3, 4, 5)] = 0
.
Asi pues, text[0]
permanece no modificado y es 1, text[1]
es igualado a 0
y los restantes miembros quedan undef
ya que la parte derecha es una lista que contiene
un sólo elemento.
lhp@nereida:~/Lperl/src$ perl -wde 0 main::(-e:1): 0 DB<1> @text = (1, 2, 3, 4, 5) DB<2> @text[@text] = 0 DB<3> x @text 0 1 1 0 2 undef 3 undef 4 undef 5 undef DB<4> @text = (1, 2, 3, 4, 5) DB<5> $text[@text] = 0 DB<6> x @text 0 1 1 2 2 3 3 4 4 5 5 0
Casiano Rodríguez León