The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
#!/home/ivan/bin/perl

use strict;
use warnings;
no warnings qw(uninitialized);
use CGI ();
use Template;
use lib qw(pod-indexing-snapshot/lib pod-indexing-snapshot/);
use Pod::Perldoc;

my $cgi = CGI->new;
print $cgi->header;

my $keyword = $cgi->param('keyword');
my $nocase  = $cgi->param('nocase');

my $pod;
my $err;
my $out;

if (defined $keyword) {
    open my $fh_out, ">", \$out or die;
    open my $fh_err, ">", \$err or die;
    my $old_stdout = *STDOUT;
    *STDOUT = $fh_out;
    *STDERR = $fh_err;
    push @ARGV, qw(-MPod::Perldoc::ToHTML -T -k), $keyword;
    push @ARGV, '-i' if $nocase;
    eval { Pod::Perldoc->run() };
    $err .= $@;
    ($pod) = $out =~ /<body.*?>(.*)<\/body>/s;
    *STDOUT = $old_stdout;
}

my $tt = Template->new;
$tt->process(\*DATA, { 
    pod         => $pod, 
    err         => $err, 
    keyword     => $keyword,
    nocase      => $nocase,
    script_name => $0,
}) or die;

__DATA__
<html>
<head>
<title>perldoc -k demo</title>
<link rel="stylesheet" type="text/css" href="http://search.cpan.org/s/style.css">
<style type="text/css">
    .err { color: red }
    .pod { width: 640px; margin-left: 30px }
    .pod h1 { font-size: 130% }
    .pod h2 { font-size: 120% }
    .pod h3 { font-size: 110% }
    .pod h4 { font-size: 100% }
    .k { color: green; font-family: monospace }
    a.u { color:black; text-decoration: none; }
</style>
</head>
<body>
<div id="header"><a href="/">POD Indexing Project</a></div>
<h1><i>perldoc -k</i> demo</h1>
<form action="/[% script_name %]">
Keyword to search: <input name="keyword" value="[% keyword | html %]">
<input type="submit">
<br><input type="checkbox" id="nocase" name="nocase" value="1" [% 'checked="checked"' IF nocase %]> <label for="nocase">Case-insensitive</label>
</form>
<hr>

[% IF keyword %]
<p>Searched for `<span class="k">[% keyword | html %]</span>'</p>
[% END %]

[% IF err %]
    <div class="err">
    [% err %]
    </div>
[% END %]

[% IF pod %]
<div class="pod">[% pod %]</div>
[% END %]

</body>
</html>