提供默认位置以仅在默认INC中不查找perl模块

时间:2015-12-08 23:49:18

标签: perl

我有一个模块,我将在大多数其他模块中使用。理想情况下,此模块将位于PERL5LIB指向的目录中。如果不知道模块的预期文件结构,那么我理论上可以使用相对于当前模块的路径找到所需的模块,在失败之前重新开始。

问题是标准使用lib'path'格式在查看@INC的其余部分之前会查看'path',例如PERL5LIB提供的那些目录。有没有一种方便的语法来指定只在搜索到@INC之后查看的路径,而不是通过将变量推到数组的后面来修改@INC?

2 个答案:

答案 0 :(得分:1)

  

是否有方便的语法来指定仅在搜索@INC后才能查看的路径

不,如果不将其包含在搜索路径列表(@INC)中,则无法指定要搜索的路径。

答案 1 :(得分:-1)

如果您没有自动包含的perl版本或perl体系结构特定目录(use lib的方式),请执行

BEGIN { push @INC, 'path' }

如果您确实有这样的目录,并且您想要完全执行use lib只有最后添加的目录,请执行以下操作:

BEGIN { push @INC, do { require lib; local @INC; 'lib'->import('path'); @INC } }