2010-03-17 4 views

Répondre

1

Il est facile à fouetter à l'aide d'un Pod::Find de la distribution Pod::Parser.

Le script ci-dessous crée un fichier d'index rudimentaire pour tout ce qu'il peut trouver sous site/lib/CGI. Cela veut dire une démonstration. Vous êtes probablement mieux avec pod2html, mais ce script peut toujours être utile.

#!/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); 
+0

Merci @Sinan Cela ressemble le genre de chose que je cherchais. – justintime

2

pod2html --recurse --podpath <dirname>

Voir perldoc pod2html

+2

Cela semble fonctionner uniquement avec les fichiers '.pod', ou ai-je oublié quelque chose? – mob

+0

comment créer récursivement les fichiers pod en premier lieu? – ianbeks

Questions connexes