#!/usr/bin/perl use strict; use CGI qw(:standard); use File::Basename; use ExtUtils::Installed; my $script = $ENV{'SCRIPT_NAME'}; my $cpan = "http://search.cpan.org/search"; my $inst = ExtUtils::Installed->new(); my $cgi = CGI->new(); print header(), start_html({-style =>'font-family: courier;', -title =>'MoDetails v0.2'}); print_form(); print_results($cgi) if $cgi->param('mod'); sub print_form { push my @modules, $inst->modules(); my $modname = $cgi->param('mod'); print start_form(-name =>"modules", -action =>"$script?mod=$modname"), popup_menu(-name =>'mod', -value =>\@modules), submit(-label =>'Module Details'), end_form; } sub print_results { my $module = $cgi->param('mod'); print p({-class=>'c'}, b("Module Name"), ":", $module); print p(b("Version currently installed"), ":", $inst->version($module)); push my @filelist, $inst->files($module); print p(b("Files Installed by $module"), br(), join br(), $inst->files($module)); push my @podpm, $inst->files($module); foreach my $file (@podpm) { my $base = basename($file); my $dir = dirname($file); my $nmod = $module; $nmod =~ s,::,/,; if ($file =~ /$nmod.pm/i) { system('/usr/bin/pod2html', "$file", '--outfile', "$base.html"); print b("Documentation for"), ":", br(), a({-href=>"$base.html"}, "$module.pm"), " (local version)", br(); } } print a({-href=>"${cpan}?query=$module&mode=module"}, "$module"), " (CPAN latest version)", br(); my @newinc = (split " ", "@INC"); print br(), b("Environment available to this user"), br(), "\@INC", div({-style=>'padding-left: 20px;'}, join br(), sort @newinc); print br(), b("Host operating system"), br(), div({-style=>'padding-left: 20px;'}, "$^O"); print br(), b("Path to perl binary"), br(), div({-style=>'padding-left: 20px;'}, "$^X"); }