For inspecting module subs and class methods, I use Class::Inspector in a script like so:
#!/usr/bin/perl
use strict;
use warnings;
use Class::Inspector;
use English qw( -no_match_vars );
for my $class_name ( @ARGV ) {
chomp $class_name;
print "$class_name:\n";
eval {
eval "require $class_name";
};
if ( $EVAL_ERROR ) {
print "Unable to load class $class_name! ($EVAL_ERROR)\n";
next;
}
my $method_names_ref = Class::Inspector->methods( $class_name, 'full' );
if ( !defined $method_names_ref ) {
print "No methods for class $class_name!\n";
next;
}
my @method_names = @{ $method_names_ref };
for my $method_name ( sort @method_names ) {
print "\t$method_name\n";
}
}