#!perl -wl my @todo = *::; while (@todo) { my $st = shift(@todo); my @sl = sort values %$st; print for map /^\*(.*)/, grep *$_{CODE}, @sl; push @todo, grep !/\*main::main::/, grep /::$/, @sl; }