2016-03-15 3 views
1

Я обычно задокументировать мой PERL код с использованием синтаксиса POD, как правило, я могу прочитать документацию, используя:ошибка perldoc: Нет документации файл

perldoc myscript.pl 

где myscript.pl является Perl-скрипт, который я написал с POD внутри.

Например, если myscript.pl содержит:

#!/usr/bin/perl 

use warnings; 
use strict; 

print 'hello world'; 

=head1 NAME 

My Script name 

=head1 DESCRIPTION 

Description of My Script 

=cut 

и выполнить: perldoc myscript.pl Я получил это:

MYSCRIPT(1)   User Contributed Perl Documentation   MYSCRIPT(1) 



NAME 
     My Script name 

DESCRIPTION 
     Description of My Script 



perl v5.18.2      2016-03-15      MYSCRIPT(1) 

Теперь я обнаружил, что в некоторых системах я получил следующая ошибка:

$ perldoc myscript.pl 
No documentation found for "myscript.pl". 

У кого-нибудь есть идея, почему это происходит? Может быть недостающий модуль или программный пакет? Что-нибудь еще?

+3

Попробуйте такие вещи, как 'type perldoc', make убедитесь, что сценарий существует в текущем каталоге или в $ PATH. Какие версии Perl задействованы? – choroba

+0

perldoc отлично работает, это не проблема ... perl 5.18.2 работает нормально в Mac OS, но такая же версия не работает на Debian, поэтому я не думаю, что это связано с версией – tvs

+0

Где находится скрипт в Mac OS X ? Где скрипт на Debian? Каков ваш текущий каталог при запуске 'perldoc myscript.pl' в Mac OS X и Debian? –

ответ

0

Если вы обратитесь к странице руководства для perldoc; man perldoc вы читаете:

"perldoc" also searches directories specified by the 
"PERL5LIB" (or "PERLLIB" if "PERL5LIB" is not defined) and 
"PATH" environment variables. (The latter is so that embedded 
pods for executables, such as "perldoc" itself,are available.) 

Итак, вы видите, обычные места, которые могут быть найдены ищутся библиотеки модулей, но и каталоги, указанные в вашем $ PATH переменной окружения. Последнее может стать неожиданностью, но, как объясняет справочная страница, как еще будет проверяться POD в домашних сценариях.

Ваш вопрос действительно зависит от вашей среды так, я ничего не могу сказать авторитетным, но я бы поспорить, что в некоторых местах (т.е. некоторые машины) ваши $ PATH включает «» - текущий каталог - для удобства, но на других машинах, "." исключается из $ PATH на охраняемых территориях.

В противном случае, вы можете получить бегущий комментарий о том, где perldoc ищет POD с помощью опции -D CLI:

$ perldoc -D myscript.pl 
Ending switch processing. Args are [myscript.pl] with 0 errors. 
Pagers: /usr/bin/sensible-pagermorelesspgviewcat/usr/bin/perldoc => Pod::Perldoc v3.23 

Formatter class Pod::Perldoc::ToTerm version 3.23 successfully loaded! 
Will format with the class Pod::Perldoc::ToTerm 
Searching for myscript.pl 
Looking for myscript.pl in /usr/bin /etc/perl /usr/local/lib/x86_64-linux-gn 
u/perl/5.20.2 /usr/local/share/perl/5.20.2 /usr/lib/x86_64-linux-gnu/perl5/5.20 
/usr/share/perl5 /usr/lib/x86_64-linux-gnu/perl/5.20 /usr/share/perl/5.20 
/usr/local/lib/site_perl . /opt/perl6/share/perl6/site/bin /opt/perl6/bin 
/usr/local/sbin /usr/local/bin /usr/sbin /usr/bin /sbin /bin 
No documentation found for "myscript.pl". 
$ 

Я намеренно выбрал «myscript.pl», потому что я не» У меня есть такой скрипт. Вы видите отчетливо везде, где это выглядит - это должно выявить, где проблема. Наконец, наконец, вы можете использовать -F, чтобы явно указать, какой файл вывести из POD. Это можно использовать, чтобы узнать, является ли проблема POD в самом файле: perldoc -F ./myscript.pl

+0

Я добавил **. ** в переменную среды ** $ PATH **, но поведение такое же ... Кроме того, в обе среды **.** (текущий каталог) включен в определенный путь библиотеки – tvs

+0

Я обновил свой ответ с помощью другой вещи, чтобы попробовать - опция «-D» – Marty

+0

, очевидно, что ошибка, согласно опубликованному выходу, она искала myscript.pl в **. ** (текущий каталог), но он не смог найти его, верно? – tvs

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