Нет вывода из 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