File::PackageIndexer is a Perl module that parses a piece of Perl code using PPI and tries to find all subs and their packages as well as the inheritance of the packages.
Currently, the following constructs are recognized:
package statements
plain subroutine declarations
Class::Accessor-like accessor generation
Class::XSAccessor and Class::XSAccessor::Array
use base ... inheritance declaration
use parent ... inheritance declaration
our @ISA = ... and @ISA = ... inheritance declaration
push @ISA, ... and unshift @ISA, ... inheritance modification
The inheritance detection (hopefully) correctly recognizes the effect of special blocks such as BEGIN {...}. END blocks are ignored.
SYNOPSIS
use File::PackageIndexer;
my $indexer = File::PackageIndexer->new();
$indexer->clean(1);
my $pkgs = $indexer->parse( $ppi_document_or_code_string );
use Data::Dumper;
print Dumper $pkgs;
# prints something like:
# {
# Some::Package => {
# name => 'Some::Package',
# subs => {
# new => 1,
# foo => 1,
# },
# isa => [ 'SuperClass1', 'SuperClass2' ],
# },
# ... other pkgs ...
# }
Product's homepage
Requirements:
· Perl