Beefy Boxes and Bandwidth Generously Provided by pair Networks
Do you know where your variables are?

Displaying symbol tables for debugging

by integral (Hermit)
on Feb 09, 2003 at 08:37 UTC ( #233859=snippet: print w/ replies, xml ) Need Help??

Description: Although there are now Devel:: modules on CPAN which do an excellent job of making symbol tables easy to play with, I wrote these three routines for quick debugging of some code which played around with Safe and other symbol table tricks.
sub packages {
  print "Packages: ", join(" ", grep /::$/, keys %::), "\n";
  print "  INC: ", join(" ", sort keys %INC), "\n";

sub symbols {
  my $pkg = $_[0] || '';
  no strict 'refs';
  print "Symbols: ", join(" ", sort keys %{$pkg.'::'}), "\n";

sub symbols2 {
  my $pkg = $_[0] || '';
  no strict 'refs';
  print "Symbols in ${pkg}::\n";
  my $hash = *{$pkg.'::'}{HASH};
  for (sort grep {!/::$|^_</} keys %$hash) {
    my $sym = $_;
    my $glob = $hash->{$_};
    $sym =~ s/[[:cntrl:]]/'^' . chr(ord($&) + ord('@'))/ge;
    print "  $sym (", *{$glob}{PACKAGE}, '::', *{$glob}{NAME}, "): ";
    if (defined $$_) {
      print "SCALAR='$$glob' ";
    for my $THING (qw(ARRAY HASH CODE IO)) {
      my $ref = *{$glob}{$THING};
      if (defined $ref) {
        print "$THING=$ref ";
    print "\n";
Comment on Displaying symbol tables for debugging
Download Code

Back to Snippets Section

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: snippet [id://233859]
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others cooling their heels in the Monastery: (11)
As of 2016-02-10 19:15 GMT
Find Nodes?
    Voting Booth?

    How many photographs, souvenirs, artworks, trophies or other decorative objects are displayed in your home?

    Results (354 votes), past polls