in reply to query for methods?
Here's a little routine I whipped up that should handle the @ISA path for a class. Mind, it still won't tell you about tricky additions to the method space such as auto-loaded methods that aren't pre-declared with "use vars", for example. In other words, you can fool it pretty easily but if you're using the code in a fairly plain environment, it should at least be helpful.
sub find_methods { my $pack = shift; my $tbl = shift || {}; no strict 'refs'; my ($key, $val); while (($key, $val) = each %{"${pack}::"}) { $tbl->{$key}++ if defined *{$val}{CODE}; } if (@{"${pack}::ISA"}) { find_methods($_, $tbl) for (@{"${pack}::ISA"}); } sort keys %$tbl; }
It assumes that the code behind the specified class has already been loaded. You call it as:
@methods = find_methods $classname;
You won't get duplicate names in the cases where a sub-class overrides a method previously defined in a parent. Recursion is your friend.
--rjray
|
|---|