Perl インストールされているモジュールの一覧

投稿者:

ロリポップではこうなった
ここをクリック
#!/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);

Thank you for reading this post, don't forget to subscribe!