Ejemplo

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
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