Ambiguedad en el De-referenciado

¿Como se debe interpretar la expresión $$a[1]? ¿Cómo ${$a[1]} o bien como ${$a}[1]? ¿Se está hablando de un array @a cuyo elemento $a[1] es una referencia a un escalar o es $a una referencia a una lista @$a cuyo segundo elemento esta siendo accedido?

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]                      # $$a[1] es ${$a}[1]
SCALAR(0x81046f4)



Subsecciones
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