影响Perl模块搜索位置的所有方法是什么?或者,Perl的@INC是如何构建的?
我们知道,Perl使用@INC包含目录名的数组来确定搜索Perl模块文件的位置.
在StackOverflow上似乎没有全面的"@INC"FAQ类型的帖子,所以这个问题是一个问题.
我已经阅读了模块上的perldoc,但是我没有看到有关命名包的建议,因此它不会与内置或CPAN模块/包名冲突.
过去,为了开发本地Session.pm模块,我使用我公司的名称创建了一个本地目录,例如:
package Company::Session;
Run Code Online (Sandbox Code Playgroud)
...和Session.pm可以在目录Company /中找到.
但我不是这个命名惯例的粉丝.我宁愿将包层次结构命名为更接近代码的功能.但这就是CPAN一般的做法......
我觉得我错过了一些基本的东西.我也看过达米安的Perl最佳实践,但我可能没有找到正确的地方......
有关避免包命名空间冲突的任何建议吗?
更新W /相关的问题:如果是一个包名称冲突,如何Perl的选择使用哪一个?感谢大家.
如果我的Perl程序使用Perl模块,它将如何确定在哪里找到包含模块代码的文件?
例如,如果程序包含:
use MyModule1; # Example 1
use This::Here::MyModule2; # Example 2
Run Code Online (Sandbox Code Playgroud)
它会在哪里看?