0

我试图找到 perl 模块,例如严格和警告,但我找不到它们...顺便说一句,我实际上使用的是 archlinux,我尝试使用

whereis

但它什么也没扔。

4

4 回答 4

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,它会返回所有模块的版本。

于 2011-09-22T19:34:42.923 回答
1

由于您使用的是 Linux 发行版,因此本机包管理器是最合适的工具。在这种情况下,强烈建议使用 pacman 来完成这样的任务:

pacman -Ql perl | egrep '(strict|warnings).pm'
于 2012-01-30T16:59:25.293 回答
1

要查找单个模块:

perldoc -l warnings

所有模块都在@INC目录下:

perl -V

另请参阅:查找与正则表达式匹配的已安装 Perl 模块

于 2011-09-22T19:17:57.643 回答
1

%INC散列保存已加载模块的磁盘位置,以包名称为键。您可以单步执行 的键%INC并打印出关联的值。例如:

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

(我加载了 Data::Dump 以便确保至少有一个模块被拉入。您不必自己加载该特定模块。)

此外,该@INC数组包含perl搜索模块的包含路径,因此您可以随时执行以下操作:

$ perl -E 'say foreach @INC'

查找所有默认包含路径。

于 2011-09-22T19:43:22.143 回答