Няма изход от Pod::Simple

Опитвам се да използвам Pod::Simple в perl, но не получавам никакъв резултат. Мога да получа резултат с 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, не получавам резултат. „perl pod-test.pl 5“ работи добре.

Как трябва да извикам методите output_fh или output_string?


person David Levner    schedule 29.05.2014    source източник


Отговори (1)


Модулът 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
person Borodin    schedule 29.05.2014
comment
Благодаря, че се включихте с един от отговорите си със стандартно качество. Винаги оценявам научаването на нови неща. - person Miller; 29.05.2014
comment
Благодаря. Направих промените и кодът вече работи в моята среда. Другата грешка, която направих, беше подаването на скаларна препратка към метода parse_string_document, $pod_parser-›parse_string_document(\$pod_document), вместо просто предаване на скалар, $pod_parser-›parse_string_document($pod_document), както направихте. - person David Levner; 29.05.2014
comment
@DavidLevner: Радвам се, че се справихте. Това, което ме притеснява е, че казвате във въпроса си, Мога да получа резултат с Pod::Simple::Text, което пренебрегнах, когато написах решението си. Така че изглежда, че вече сте имали отговора и се чудя защо искате да го накарате да работи по различен начин? - person Borodin; 29.05.2014