3

有没有办法从 Perl 脚本导入/导出单个子例程。我被要求将测试用例分为正面和负面测试,我不想复制整个子例程。但是,如果我requireuse从消极的积极测试用例,我会收到redefined所有通常命名的潜艇的警告。以下是我尝试过的一些替代方案:

require/use "positive_test.pl" qw (useful_sub);
#throws warning: Subroutine run_test redefined at ...

require/use "positive_test.pl::useful_sub";
#throws can't locate in @INC error

并来自 positive_test 脚本:

use base 'Exporter';
our @EXPORT = qw(useful_sub);

我还尝试过在新的子例程命名空间中使用和要求。我错过了什么,或者我必须将每个常见的模块名称包装在无警告“重新定义”包装器中?谢谢你的帮助

4

1 回答 1

3

可能最好的是:进行一些重构。创建一个新的 .pm 文件,其中包含您要导出的所有潜艇。

当然,Perl 可以在不重构的情况下解决这些问题。例如,您可以在调用 require 之前切换到另一个包:

{
    package AnotherPackage;
    require "positive_test.pl";
}

AnotherPackage::useful_test();

请注意,在这种情况下,您根本不需要 Exporter。

于 2013-07-09T05:47:16.670 回答