2011-09-22 64 views
0

林Perl模塊試圖找到Perl模塊,如嚴格和警告,但我不能找到他們......順便說一句其實即時通訊使用的archlinux,我嘗試使用哪裏位於ArchLinux的

whereis 

但它拋出沒有。

回答

4

如果模塊已經POD文檔嵌入(其中大部分做),以下將顯示其位置:

perldoc -l Some::Module (Lowercase "L" for "location") 

否則,您可以使用

perl -E'use Some::Module; say $INC{"Some/Module.pm"};' 

您可能會感興趣確定所有在你的Perl搜索模塊的位置。如果是這樣,請查看@INC的內容。您可以使用

perl -V     (Uppercase "V") 

perl -E'say for @INC;' 

您還可能有興趣在Devel::Modlist。下面將列出的路徑通過腳本或模塊(直接或間接)中使用的所有模塊:

perl -d:Modlist=path some_script.pl 

perl -d:Modlist=path -e'use Some::Module;' 

沒有=path,則返回所有的模塊的版本。

+0

@Josh,添加了對Devel :: Modlist的引用。 – ikegami

1

%INC散列保存加載模塊的磁盤位置,以包名稱爲鍵。您可以逐步瀏覽%INC的鍵並輸出相關的值。例如:

$ perl -MData::Dump -e 'print "$_: $INC{$_}\n" foreach keys %INC' 

(我裝的數據轉儲::使至少一個模塊將肯定被拉到你不必自己加載特定模塊。)

此外, @INC數組保存包括路徑是perl搜索模塊,所以你總是可以做:

$ perl -E 'say foreach @INC' 

要查找所有默認包括路徑。

1

由於您使用的是Linux發行版,因此本地軟件包管理器是最合適的工具。在這種情況下,強烈建議使用pacman進行這樣的任務:

pacman -Ql perl | egrep '(strict|warnings).pm'