Как я могу создать HTML-сводку модулей или скриптов Perl в каталоге?
Существует ли инструмент, который может создать сводный список HTML-модулей или сценариев perl в дереве каталогов?
Дано
=head1 NAME
wibble.pl - does wibble actions
Я хотел бы видеть что-то вроде
<a href="docsforwibble">wibble.pl</a> - does wibble actions
<a href="docsforwobble">wobble.pl</a> - does wobble actions
2 ответа
Решение
Его легко вывести с помощью Pod:: Find из дистрибутива Pod::Parser.
Сценарий ниже создает элементарный индексный файл для всего, что он может найти под моим site/lib/CGI
, Это подразумевается как демонстрация. Вы, вероятно, лучше с pod2html
, но этот скрипт все еще может быть полезен.
#!/usr/bin/perl
use strict; use warnings;
use autodie;
use File::Spec::Functions qw( canonpath );
use HTML::Template;
use Pod::Find qw(pod_find simplify_name);
use Pod::Select;
my $mod_top = canonpath 'c:/opt/perl/site/lib/CGI';
my $html_top = 'c:/opt/perl/html/site/lib/CGI';
my %pods = pod_find($mod_top);
my @pods;
for my $pod ( sort keys %pods ) {
(my $link = $pod) =~ s/^\Q$mod_top//;
$link =~ s/\.\w+\z//;
$link = "file:///${html_top}${link}.html";
my $name;
{
local *STDOUT;
open STDOUT, '>', \$name;
podselect({-sections => [ 'NAME' ] }, $pod);
}
$name = '' unless defined $name;
$name =~ s/^=head1\s+NAME\s+//;
$name =~ s/\s+\z//;
push @pods, {
POD => $pods{$pod},
NAME => $name,
LINK => $link,
};
}
my $tmpl = HTML::Template->new(scalarref => \ <<EO_TMPL
<!DOCTYPE HTML>
<html>
<head><title>Index of Perl Modules</title></head>
<body>
<h1><TMPL_VAR CATEGORY></h1>
<dl>
<TMPL_LOOP PODS>
<dt><a href="<TMPL_VAR LINK>"><TMPL_VAR POD></a></dt>
<dd><TMPL_VAR NAME></dd>
</TMPL_LOOP>
</ul>
</body>
</html>
EO_TMPL
);
$tmpl->param(
CATEGORY => 'CGI',
PODS => \@pods,
);
$tmpl->output(print_to => \*STDOUT);
pod2html --recurse --podpath <dirname>
Смотрите perldoc pod2html