#!/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>/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__ perldoc -k demo

perldoc -k demo

Keyword to search:

[% IF keyword %]

Searched for `[% keyword | html %]'

[% END %] [% IF err %]
[% err %]
[% END %] [% IF pod %]
[% pod %]
[% END %]