在目录中使用模块

use lib 'includes';
use MySuperCoolModule;

use lib 'includes'; 将相对目录 includes/添加为 @INC 中的另一个模块搜索路径。假设你在 includes/里面有一个模块文件 MySyperCoolModule.pm,它包含:

package MySuperCoolModule;

如果需要,你可以在单个目录中将自己的模块分组,并使用一个 use lib 语句查找它们。

此时,使用模块中的子例程将需要在子例程名称前加上包名称:

MySuperCoolModule::SuperCoolSub_1("Super Cool String");

为了能够使用没有前缀的子例程,你需要导出子例程名称,以便调用它们的程序识别它们。导出可以设置为自动,因此:

package MySuperCoolModule;
use base 'Exporter';
our @EXPORT = ('SuperCoolSub_1', 'SuperCoolSub_2');

然后在 uses 模块的文件中,这些子程序将自动可用:

use MySuperCoolModule;
SuperCoolSub_1("Super Cool String");

或者你可以将模块设置为有条件地导出子例程,因此:

package MySuperCoolModule;
use base 'Exporter';
our @EXPORT_OK = ('SuperCoolSub_1', 'SuperCoolSub_2');

在这种情况下,你需要显式请求在模块的脚本中导出所需的子例程:

use MySuperCoolModule 'SuperCoolSub_1';
SuperCoolSub_1("Super Cool String");