Por ejemplo, dado el paquete Test:
lhp@nereida:~/Lperl/src/advanced_perl_programming/Typeglob$ cat -n dumpvar.pl
41  package Test;
42  our $x = 10;
43  our @y = (1,3,4);
44  our %z = (1,2,3,4, 5, 6);
45  our $z = 300;
46  our $f = sub { 1; };
la llamada:
48  DumpPackage::dumpackage("Test");
producirá una salida similar a:
lhp@nereida:~/Lperl/src/advanced_perl_programming/Typeglob$ dumppackage.pl
y
        Lista @y: [
          1,
          3,
          4
        ]
=============================
__ANON__
=============================
x
        Escalar $x:     10
=============================
f
        Escalar $f: sub {
            package Test;
            use strict 'refs';
            1;
        }
=============================
z
        Escalar $z:     300
        Hash %z: {
          1 => 2,
          3 => 4,
          5 => 6
        }
=============================
Para imprimir una estructura de datos compleja existen varias soluciones.
Puede usar 
el módulo Data::Dumper para volcar las estructuras de datos
resultantes. Consulte la documentación del módulo.
Puede partir del esqueleto que sigue. Las líneas de puntos indican lugares en los que deberá insertar el código apropiado.
lhp@nereida:~/Lperl/src/advanced_perl_programming/Typeglob$ cat -n dumppackage.pl
 1  #!/usr/local/bin/perl -w
 2  use strict;
 3
 4  package DumpPackage;
 5  use Data::Dumper;
 6
 7  $Data::Dumper::Terse = 1;
 8  $Data::Dumper::Deparse = 1;
 9
10  sub dumpackage {
11      my ($packageName) = @_;
12      my $rPackage;
13      {
14        .................
15        $rPackage = \%{"${packageName}::"};  # Obtener la referencia al stash
16      }
17      $, = " ";
18      while (my ($varName, $globValue) = each %$rPackage) {
19          print "$varName\n";
20          our ($..., @..., %...);
21          *var = $globValue; # Crear un alias
22          if (defined ($var)) {
..              ..................................
25          }
26          if (defined (@var)) {
..              ..................................
30          }
31          if (defined (%var)) {
..              ..................................
35          }
36          print "============================= \n";
37      }
38  }
Casiano Rodríguez León
