Referencias a Typeglobs

Es legal tomar una referencia a un ''typeglob''. Por ejemplo:

  DB<1> $a = 4; @a = 1..5
  DB<2> $b = \*a
  DB<3> x $b
0  GLOB(0x8450df8)
   -> *main::a
  DB<4> x ${*$b}
0  4
  DB<5> x @{*$b}
0  1
1  2
2  3
3  4
4  5

Veamos otro ejemplo:

lhp@nereida:~/Lperl/src$ perl -wde 0
main::(-e:1):   0
  DB<1> %variable = (v => "ven", a => "a", r=> "rumania")
  DB<2> sub variable { print "esto es una variable" }
  DB<3> $typeglob_ref = \*variable

Ahora typeglob_ref contiene una referencia a la entrada en la tabla de sımbolos para variable. Podemos acceder a los elementos individuales a través de la referencia:

  DB<4> x %{*$typeglob_ref}
0  'r'
1  'rumania'
2  'a'
3  'a'
4  'v'
5  'ven'
  DB<5> x &{*$typeglob_ref}()
0  1
  DB<6> x *$typeglob_ref->()
0  1
  DB<7> x *$typeglob_ref->{r}
0  'rumania'

Ejercicio 4.15.3   ¿Por que no sale por pantalla el mensaje "esto es una variable" en las líneas 5,6 y 7? ¿Por que la respuesta es "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