#!/usr/bin/perl #test package Module; $Foo = 10; @Foo = (10, 20, 30); %Foo = ('Wall' => 'Larry', 'Miles' => 'Doug'); $main::Export = 'Something'; package main; *Bar = *Module::Foo; recurse_symbol_table('main::'); # recurse_symbol_table ######################################################### sub recurse_symbol_table { my $symbol_table = shift; print "\nSymbol Table $symbol_table\n\n"; foreach my $symbol_name (sort(keys(%{$symbol_table}))) { local *symbol = $main::{$symbol_name}; print " \$$symbol_name is defined\n" if defined $symbol; print " \@$symbol_name is defined\n" if defined @symbol; print " \%$symbol_name is defined\n" if defined %symbol; if($symbol_name =~ /::$/ && $symbol_name ne 'main::') { my $symbol_table = $symbol_name; print "\n Symbol Table $symbol_table\n\n"; foreach my $symbol_name (sort(keys(%{$symbol_table}))) { local *symbol = $symbol_table . $symbol_name; print " \$$symbol_name is defined\n" if defined $symbol; print " \@$symbol_name is defined\n" if defined @symbol; print " \%$symbol_name is defined\n" if defined %symbol; } # END: foreach my $symbol_name (sort(keys(%{$symbol_table}))) print "\n"; } # END: if($symbol_name =~ /::$/ && $symbol_name ne 'main::') } # END: foreach my $symbol_name (sort(keys(%{$symbol_table}))) } # END: recurse_symbol_table