ロリポップではこうなった
ここをクリック
#!/usr/bin/perl
use strict;
use CGI;
my $q = CGI->new;
my @modules = ();
foreach my $base_dir ( @INC ) {
my @dir = ( undef );
while ( @dir ) {
my $dir = pop @dir;
my $open = $base_dir;
$dir and $open .= “/$dir”;
opendir ( DIR, $open );
my @object = grep { !/^\./ } readdir ( DIR );
closedir ( DIR );
push @dir, map { “$dir/$_” } grep { -d “$base_dir/$dir/$_” } @object;
push @modules, map { “$dir/$_” } grep { /\.pm$/ } @object;
}
}
map { s/^\/// } @modules;
my %modules = map { $_=>1 } @modules;
@modules = sort keys %modules;
my $modules = {};
foreach ( @modules ) {
my @temp = split /\//;
my $eval = ‘$modules->’.join(‘->’,map{ ‘{“‘.$_.'”}’ }@temp).’= 1;’;
eval $eval;
}
print $q->header;
print $q->start_html(-title=>’modules in this Perl.’);
print hashref2list($modules);
print $q->end_html;
sub hashref2list {
my $hashref = shift;
my $parent = shift;
my @keys = keys %{$hashref};
my @file = ();
my @dir = ();
foreach ( @keys ) {
if ( ref $hashref->{$_} ) {
push @dir, $_;
} else {
push @file, $_;
}
}
@dir = sort @dir;
map { s/\.pm$// } @file;
@file = sort @file;
return $q->ul(
$q->li([map { “$parent$_” } @file]),
$q->li([map { $_.’::’.hashref2list($hashref->{$_}, $parent.$_.’::’) } @dir])
);
}
exit(0);