$$a[1]
?
¿Cómo ${$a[1]}
o bien como ${$a}[1]
?
La siguiente ejecución en el depurador nos muestra la respuesta:
DB<1> $a = 4; $b = 5; $c = 6 DB<2> @a = \($a, $b, $c) DB<3> $a = \@a DB<4> p $$a[1] SCALAR(0x81046f4) DB<5> p @a SCALAR(0x81046d0)SCALAR(0x81046f4)SCALAR(0x81046ac) DB<6> p ${$a[1]} 5 DB<7> p ${$a}[1] SCALAR(0x81046f4)
Cuando Perl evalúa una expresión deja la evaluación de los índices y las claves para el final. El prefijo mas cercáno a la variable es el primero en evaluarse. Es decir, los prefijos se evalúan de derecha a izquierda.
Las llaves significan un bloque de código. Así pues en la expresión
${ ... }[1]
la parte interna a las llaves es un bloque de código que debe,
eso si, devolver una referencia a un array.
Veamos un ejemplo:
sub t { return \$a; } $a = 10; $b = ${t()}; print $b; # 10