use Devel::Symdump; my $obj = Devel::Symdump->rnew( $package_name ); my @methods = $obj->functions(); # if you are sure private methods only start with underscore... my @public_methods = grep {$_ !~ /^_/} @methods;