I use this often:
#!/usr/bin/perl
use strict;
use warnings;
#by Abigail of perlmonks
# example usage: $0 IO::File
my $class = shift or die "need a class\n";
eval "use $class";
die $@ if $@;
# First, find all the classes, and the ones it inherits.
my %classes = ($class => 1);
my @classes = ($class);
while (@classes) {
my $class = pop @classes;
no strict 'refs';
foreach my $class (@{"$class\::ISA"}) {
next if $classes {$class} ++;
push @classes => $class;
}
}
# Then find the subs in those classes.
while (my $class = each %classes) {
no strict 'refs';
print "From class '$class':\n";
while (my $entry = each %{"$class\::"}) {
print "\t$entry\n" if defined &{"$class\::$entry"};
}
}
__END__