Consideremos el siguiente código que contiene dos
paquetes: main
y toto
:
$ cat -n package_main.pl 1 #!/usr/local/bin/perl5.8.0 -w 2 3 $a = 4; 4 5 package toto; 6 $a = 8; 7 $::a = 7; 8 9 package main; 10 print $a, "\n"; 11 print $toto::a, "\n";La ejecución con el depurador muestra la estructura de un stash:
$ perl -d package_main.pl Loading DB routines from perl5db.pl version 1.25 main::(package_main.pl:3): $a = 4; # a de main DB<1> n toto::(package_main.pl:6): $a = 8; # a de toto DB<1> n toto::(package_main.pl:7): $::a = 7; DB<1> n main::(package_main.pl:10): print $a, "\n"; DB<1> x %toto:: 0 'a' # clave 1 *toto::a # valor DB<2> x $toto::{a} # indexamos 0 *toto::a DB<3> x *{toto::a}{SCALAR} # typeglob usado como hash 0 SCALAR(0x8163978) # referencia a un escalar -> 8 DB<4> x *{$toto::{a}}{SCALAR} 0 SCALAR(0x8163978) -> 8 DB<5> *b = $toto::{a} DB<6> p $b 8
Casiano Rodríguez León