从perl程序导入单个子程序

时间:2013-07-09 00:18:02

标签: perl perl-module

有没有办法从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);

我也试过在一个新的子例程命名空间中使用和require。我缺少什么,或者我必须在无警告'重新定义'包装器中包装每个常用模块名称?谢谢你的帮助

1 个答案:

答案 0 :(得分:3)

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

当然,Perl可以在没有重构的情况下解决这些问题。例如,您可以在调用require:

之前切换到另一个包
{
    package AnotherPackage;
    require "positive_test.pl";
}

AnotherPackage::useful_test();

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