2016-03-15 24 views
1

我通常使用POD語法記錄我的Perl代碼,通常我可以通過閱讀文檔:的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腳本在哪裏?當您在Mac OS X和Debian上運行'perldoc myscript.pl'時,目前的目錄是什麼?在這兩種情況下(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通過使用-D CLI選項,尋找POD上評論:

$ 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

相關問題