{ no strict 'subs'; sub print_subs { for (keys %{$_[0]}) { next if $_ eq $_[0]; print "$_[0]$_\n" if defined *{$_}{CODE}; print_subs($_[0].$_) if /::$/; # dirty hack } } print_subs("main::"); }