Pod :: Simple没有输出

时间:2014-05-29 04:14:49

标签: perl stdout perl-pod

我试图在perl中使用Pod :: Simple,但我没有得到任何输出。我可以使用Pod :: Simple :: Text获得输出。这是一个简短的测试程序:

use English;
use strict;
use Pod::Simple;
use Pod::Simple::Text;

my $pod_document = <<END_POD;
=pod

=head1 NAME

something

=head1 SYNOPSIS

something else

=cut
END_POD

my $pod_parser = new Pod::Simple();
my $pod_output;
if  ($ARGV[0] == 1) {$pod_parser->output_fh(*STDOUT);}
if  ($ARGV[0] == 2) {$pod_parser->output_fh(\*STDOUT);}
if  ($ARGV[0] == 3) {$pod_parser->output_fh(*STDOUT{IO});}
if  ($ARGV[0] == 4) {$pod_parser->output_string(\$pod_output);}
if  ($ARGV[0] == 5) {Pod::Simple::Text->filter(\$pod_document);}
$pod_parser->parse_string_document(\$pod_document);
if  ($ARGV[0] == 4) {print $pod_output;}

exit 0;

我把这个perl代码放到一个名为pod-test.pl的文件中。如果我使用命令行参数1,2,3或4运行它,我得不到输出。 &#39; perl pod-test.pl 5&#39;工作正常。

我应该如何调用output_fh或output_string方法?

1 个答案:

答案 0 :(得分:4)

Pod::Simple模块旨在用作您自己编写的Pod格式化程序子类的基类。子类提供了生成最终文档的方法,所以没有它Pod::Simple根本不会产生任何输出,如你所见。

如果您只想要简单的文本输出,那么已经在Pod::Simple::Text中为您编写了一个子类。你会像这样使用它

use strict;
use warnings;

use English;
use strict;
use Pod::Simple::Text;

my $pod_document = <<END_POD;
=pod

=head1 NAME

something

=head1 SYNOPSIS

something else

=cut
END_POD

my $pod_parser = Pod::Simple::Text->new;
$pod_parser->output_fh(*STDOUT);
$pod_parser->parse_string_document($pod_document);

<强>输出

NAME

    something

SYNOPSIS

    something else