我试图找到perl模块,比如严格和警告,但我找不到它们......顺便说一下我实际上使用的是archlinux,我试过用
whereis
但它什么都没有。
答案 0 :(得分: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
,则返回所有模块的版本。
答案 1 :(得分:1)
要查找单个模块:
perldoc -l warnings
所有模块都在@INC
目录下:
perl -V
另请参阅:Find installed Perl modules matching a regular expression
答案 2 :(得分:1)
%INC
哈希保存已加载模块的磁盘位置,由程序包名称键入。您可以单步执行%INC
的键并打印出相关值。例如:
$ perl -MData::Dump -e 'print "$_: $INC{$_}\n" foreach keys %INC'
(我加载了Data :: Dump,以便至少可以拉入一个模块。您不必自己加载该特定模块。)
此外,@INC
数组包含perl
搜索模块的包含路径,因此您可以随时执行:
$ perl -E 'say foreach @INC'
查找所有默认包含路径。
答案 3 :(得分:1)
由于您使用的是Linux发行版,因此本机程序包管理器是最合适的工具。在这种情况下,强烈建议使用pacman执行此类任务:
pacman -Ql perl | egrep '(strict|warnings).pm'