我需要创建一个将由其他包使用的公共包,例如:
common_1.pm有:
package common;
use test1;
use test2;
并将此常用包用于其他包中,如下所示:
test_case1.pm的内容:
package test_case1;
use common; // this should use test1 and test2
use test3;
use test4;
每个测试* .pm再次是一个单独的Perl模块,我可以像上面那样编写包吗?我是Perl的新手,感谢您的帮助。
答案 0 :(得分:2)
是的,可以做到;此类事例包括Modern::Perl,Test::Modern和GID。
我建议使用Syntax::Collector或Import::Into作为构建此类模块的工具。
以下是使用Syntax :: Collector:
如何完成的示例package common;
use Syntax::Collector -collect => q{
use test1 0;
use test2 0;
};
1;
或使用Import :: Into:
package common;
use Import::Into;
use test1;
use test2;
sub import {
my $caller = shift;
test1->import::into($caller);
test2->import::into($caller);
}
1;
也就是说,如果test1
和test2
实际上是面向对象的模块(即它们是类或角色),则根本不需要导入它们,因此以下内容就足够了: / p>
package common;
use test1;
use test2;
1;