2011-01-20 2 views
0

Я работал с учебником, найденным в документации perl о том, как использовать Getopt::Long в скрипте. Там он показывает, как добавить документацию, используя Pod::Usage, а затем ввести все из подпрограммы или что-то еще. Во всяком случае в этом примере они есть;Как добавить несколько POD в конец моего Perl-скрипта?

GetOptions('help|?' => \$help, 'b|backup' => \&backup, d|discover => \&discover, man => \$man) or pod2usage(2); 
pod2usage(1) if $help; 
pod2usage(-exitstatus => 0, -verbose => 2) if $man; 

Я добавил некоторые из своих аргументов.

Получаем, как обратиться к первому разделу документации. Но как я могу ссылаться на второй раздел, как указано pod2usage(2)?

Когда я добавляю новый раздел после =cut в конце раздела 1, когда я пытаюсь его отобразить, меня встречает командная строка, как будто она входит, а затем выходит без отображения раздела. Я делаю что-то неправильно?

ответ

3

Вам не нужно «несколько POD».

pod2usage, когда называют, например, pod2usage(1), здесь 1 представляет состояние выхода, и уровень детальности подразумевается как 1, так что он будет печатать SYNOPSIS, и любые разделы под названием OPTIONS, ARGUMENTS или OPTIONS AND ARGUMENTS

Когда вызывается как pod2usage(-exitval => 0, -verbose => 2), он напечатает весь POD, в вашем текстовом пейджере (то же, что и perldoc yourscriptname.pl) и выйдет с 0. (Примечание: -exitval, а не -exitstatus).

Это хорошо описано в документации Pod::Usagehere и работает так, как описано.

Вы можете найти необязательный параметр -sections для pod2usage, который полезен для описанного вами в сочетании с -verbose => 1, чтобы выбрать, что вы хотите отобразить.

+0

Хорошо, я просмотрел документы Pod :: Usage медленнее и увидел часть, о которой говорят. Единственной частью, с которой я не могу работать, является GetOptions ..... или pod2usage (2); Он просто сбрасывает запрос, он не отображает меню, как должно. Просто чтобы увидеть, что я редактировал один из моих флажков команды, чтобы сделать то же самое, что и pod2usage (2), и он отлично работает. – ianc1215

+0

Nevermind Я нашел решение, спасибо за помощь. – ianc1215

+1

В вашем примере ни один из параметров не требуется, и, таким образом, 'GetOptions' возвращает true (ну,' 1'), поэтому предложение 'или pod2usage (2);' никогда не выполняется. Не имеет никакого отношения к 'pod2usage'. –

Смежные вопросы