#!/usr/bin/env perl use 5.032001; use warnings; my @packages; package Fee; push @packages,__PACKAGE__; sub one { say __PACKAGE__.q{::one}; }; package Fi; push @packages,__PACKAGE__; sub two { say __PACKAGE__.q{::two}; }; { package Foo; push @packages,__PACKAGE__; sub three { say __PACKAGE__.q{::three}; }; }; # End of package Foo! sub four { say __PACKAGE__.q{:four}; }; # Dump symbols for my $package (@packages) { no strict; my %stash = %{"${package}::"}; use strict; warn Data::Dumper->new([\$package,\%stash],[qw(*package *stash)])->Deepcopy(1)->Indent(1)->Maxdepth(3)->Sortkeys(1)->Dump(),q{ }; }; 1; __DATA__ #### 'one', 'two', 'three', 'four' #### \'Fee' ( 'one' => *Fee::one ) \'Fi' ( 'BEGIN' => *Fi::BEGIN, 'DATA' => *Fi::DATA, 'four' => *Fi::four, 'two' => *Fi::two ) \'Foo' ( 'three' => *Foo::three )