The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
<%PERL>
my $self = RT->Config->Get('WebURL') . "Developer/Perldoc?n=";

# Find relevant files
my @found;
my %toc;
File::Find::find(
    {
        untaint => 1,
        follow  => ($^O ne 'MSWin32'),
        wanted  => sub {
            return unless /(\w+)\.(?:pm|pod)$/;
            return if $1 eq "perllocal";
            return if $1 =~ /_(Local|Vendor|Overlay)/;
            my $name = $File::Find::name;
            $name =~ s!.*?/lib/!!;
            $name =~ s!\.(?:pm|pod)$!!i;
            $name =~ s!\W!::!g;
            $toc{$name} = "$self$name";
            push @found, $name;
        },
    },
    RT::OnlineDocs->lib_paths
);
$m->notes(toc => \%toc);

my ($prev, $indent) = ("", 0);
foreach my $file (sort @found) {
    my ($parent, $name) = ($1, $2) if $file =~ /(?:(.*)::)?(\w+)$/;
    $parent = "" unless defined $parent;
    if ($file =~ /^$prev\::(.*)/) {
        my $foo = $1;
        while ($foo =~ s/(\w+):://) {
            $indent++;
            $m->print(qq{<span style="margin-left: @{[$indent]}em">$1</span><br />\n});
        }
        $indent++;
    } elsif ($prev !~ /^$parent\::/) {
        while ($parent =~ s/(\w+)//) {
            next if $prev =~ s/\b$1:://;
            while ($prev =~ s/:://) {
                $indent--;
            }
            $m->print(qq{<span style="margin-left: @{[$indent]}em">$1</span><br />\n});
            $indent++;
        }
    } elsif ($prev =~ /^$parent\::(.*::)/) {
        my $foo = $1;
        while ($foo =~ s/:://) {
            $indent--;
        }
    }
    $m->print(
      qq{<a style="margin-left: @{[$indent]}em" href="$self$file">$name</a><br />\n} );
    $prev = $file;
}
</%PERL>