是否必须存在用于创建包的文件夹名称的文件夹?

Lij*_*hew 4 perl package

我们正在考虑Perl项目中的公共代码.一个主程序应分成几个可重用的模块.

我们的程序名称validate_results.pl包含一组验证命令.我们计划将其拆分为小模块,因此validate_results.pl应该像:

use Common::Validate_Results;
use Common::Validate_Results::CommonCommands;
use Common::Validate_Results::ReturnCodeValidation;
...
Run Code Online (Sandbox Code Playgroud)

根据我的理解,我应该创建一个Common文件夹,并且Validate_Results.pm应该存在.再次下Common,Validate_Results应该创建文件夹,并在其下面CommonCommands,ReturnCodeValidation文件夹应该存在.

是否必须存在所有这些文件夹,或者我们是否可以将所有Perl程序放在一个文件夹中并对它们进行逻辑分组,并仍然使用上述方法来访问模块(比如common::validate_results像这样使用).

jro*_*way 6

文件系统层次结构是必需的.A :: B :: C将始终位于A/B/C.pm,位于@INC中的某个位置.

如果你必须解决这个问题,请阅读perldoc -f require,特别是在@INC中查找有关子程序引用的部分.是的,你可以让模块加载器做一些奇怪的事情,如果这是你真正想要的; 但那不是你想要的,相信我.只需坚持惯例,就像其他99.9999999%的Perl应用程序一样.