2014-10-29 57 views
1

我有一些幾乎相同的Perl腳本,所以使用文檔幾乎類似。例如,prog1.pl可能是:重構POD文檔

use warnings; 
use strict; 
use Getopt::Long qw(GetOptions); 
use Pod::Usage qw(pod2usage); 

my $help; 

GetOptions(help=>\$help); 
pod2usage(-message => "", -verbose => 2, -output => \*STDERR) if $help; 

__END__ 

=head1 SYNOPSIS 

prog [OPTIONS] 

=head1 OPTIONS 

=over 4 

=item --help 

Print this summary. 

=back 

=head1 DESCRIPTION 

A program 

現在prog2.pl是一個類似的腳本(這裏沒有顯示)。假設它有一組選項的相同文檔。對於這個虛擬示例,只需說明兩個腳本的help選項的文檔是相同的。我如何重構該文檔字符串(即字符串"Print this summary."),以便我不必在prog1.plprog2.pl中都重複相同的字符串?

回答

1

This link指的是兩個模塊,可以幫助您使用POD文檔的模板:Pod::TemplatePod::Weaver

從模板自動生成POD文檔,並使用-input選項將生成的POD文件的文件名指定爲pod2usage

+0

謝謝!我使用了'Pod :: Template'和'IO :: String'。 – 2014-11-02 11:06:42

0

以下是使用Pod::Template的可能解決方案。首先創建一個文件help.pod有:

=Template help 

=item B<--help> 

Print this summary. 

=back 

然後我們包括此程序的使用POD文檔中使用:

use warnings; 
use strict; 
use Pod::Template; 
use File::Spec::Functions qw(catfile); 
use Getopt::Long qw(GetOptions); 
BEGIN { $Pod::Usage::Formatter = 'Pod::Text::Termcap'; } 
use Pod::Usage qw(pod2usage); 
use IO::String; 

my $parser = Pod::Template->new(); 
$parser->parse(template => $0); 

my $io = IO::String->new($parser->as_string); 
my $help; 

GetOptions(help=>\$help); 
pod2usage(-message => "", -verbose => 2, -output => \*STDERR, -input => $io) if $help; 


__END__ 

=Include help.pod as Help 

=head1 SYNOPSIS 

<prog> [OPTIONS] 

=head1 OPTIONS 

=over 4 

=Insert Help->help 

=head1 DESCRIPTION 

A program