【问题标题】:Import single subroutine from perl program从 perl 程序导入单个子程序
【发布时间】:2013-07-06 10:58:09
【问题描述】:

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

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

【问题讨论】:

    标签: perl perl-module


    【解决方案1】:

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

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

    {
        package AnotherPackage;
        require "positive_test.pl";
    }
    
    AnotherPackage::useful_test();
    

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

    【讨论】:

    • 我确实需要进行一些重构。您提供的解决方案在有限的情况下运行良好,但像 Perl 的 require 这样的因素只能加载一个难以解决的实例
    猜你喜欢
    • 2012-10-10
    • 1970-01-01
    • 2011-12-22
    • 2012-07-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-03
    • 1970-01-01
    相关资源
    最近更新 更多