<%PERL>
my $dirname = File::Basename::dirname($INC{'RT.pm'});
my @found;
File::Find::find(
{ untaint => 1,
wanted => sub {
return unless /(\w+)\.pm$/;
return if $1 =~ /_/;
my $name = $File::Find::name;
$name =~ s/.*lib\b.//;
$name =~ s!\.pm!!i;
$name =~ s!\W!::!g;
push @found, $name;
},follow => ($^O ne 'MSWin32') },
$dirname,
);
my ($prev, $indent);
foreach my $file (sort @found) {
my ($parent, $name) = ($1, $2) if $file =~ /(?:(.*)::)?(\w+)$/;
if ($file =~ /^$prev\::(.*)/) {
my $foo = $1;
while ($foo =~ s/(\w+):://) {
$indent++;
$m->print((' ' x $indent));
$m->print("$1
");
}
$indent++;
} elsif ($prev !~ /^$parent\::/) {
while ($parent =~ s/(\w+)//) {
next if $prev =~ s/\b$1:://;
while ($prev =~ s/:://) {
$indent--;
}
$m->print((' ' x $indent));
$m->print("$1
");
$indent++;
}
} elsif ($prev =~ /^$parent\::(.*::)/) {
my $foo = $1;
while ($foo =~ s/:://) {
$indent--;
}
}
$m->print( ( ' ' x $indent )
. '' . $name
. '
' ."\n" );
$prev = $file;
}
%PERL>