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
