Here is a mildly improved version. HTML::Perlinfo::Modules is something I wouldn't recommend though. In addition to outputting broken non-version specific HTML, it could be replaced with just a bit of custom of code. Mixing display and system info trawling feels dirty, but in a bad way.
use strict;
use warnings;
use CGI ":standard";
use HTML::Perlinfo::Modules;
print
header(),
start_html(-title => "Perl Module Search",
-head => style({type => 'text/css'},
join('',<DATA>)
),
),
h1("Search your Perl modules");
print
div({-style => "float:left; width: 20%;"},
h3("Search..."),
start_form(-method => "get",
-enctype => "application/x-www-form-urlencoded",
-onsubmit => "return this._x ? false : ( this._x =
+true )"),
textfield("query"),
br(),
checkbox("regex"),
submit(),
end_form(),
);
if ( my $query = param("query") ) {
my $module = HTML::Perlinfo::Modules
->new
->print_modules( show_only => param("regex") ?
qr/$query/i : qr/\Q$query\
+E/,
full_page => 0 );
print
div({-style => "float:left; width: 75%; margin-left: 2%"},
$module || h2("No modules found"),
);
}
print end_html();
__DATA__
body {
font: 11px/13px helvetica-neue, helvetica, sans-serif;
color: #001;
}
a:link {color: #000099; text-decoration: none;}
a:hover {text-decoration: underline;}
table {border-collapse: collapse; width: 100%;}
.center {text-align: center;}
.center table { margin-left: auto; margin-right: auto; text-align: lef
+t;}
.center th { text-align: center !important; }
td, th { border: 1px solid #001; }
.modules table {border: 0;}
.modules td { border:0;}
.modules th { border:0;}
.p {text-align: left;}
.e {background-color: #ccf; font-weight: bold; }
.h {background-color: #99c; font-weight: bold; }
.v {background-color: #ccc; }
i {color: #666666; background-color: #ccc;}
|