加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

如何在Perl中有条件地使用模块?

发布时间:2020-12-15 21:11:59 所属栏目:大数据 来源:网络整理
导读:我想在Perl中做这样的事情: $Module1="ReportHashFile1"; # ReportHashFile1.pm$Module2="ReportHashFile2"; # ReportHashFile2.pmif(Condition1){ use $Module1;}elsif(Condition2){ use $Module2;} ReportHashFile * .pm包含一个ReportHashFile包. 还要怎
我想在Perl中做这样的事情:
$Module1="ReportHashFile1"; # ReportHashFile1.pm
$Module2="ReportHashFile2"; # ReportHashFile2.pm

if(Condition1)
{
  use $Module1;
}
elsif(Condition2)
{
  use $Module2;
}

ReportHashFile * .pm包含一个ReportHashFile包.

还要怎么引用一个数组里面的模块,基于动态模块名?

@Array= @$Module1::Array_inside_module;

有没有办法我可以实现这一点.某种编译器指令?

解决方法

您可能会发现 if模块对此有用.

否则,基本思想是使用require,这在运行时发生,而不是使用,这在编译时发生.注意 ‘

BEGIN {
    my $module = $condition ? $Module1 : $Module2;
    my $file = $module;
    $file =~ s[::][/]g;
    $file .= '.pm';
    require $file;
    $module->import;
}

至于解决全局变量,如果您刚刚导出变量或将函数返回给调用者,则可能会更容易,您可以通过其不合格的名称使用它.否则还有可能使用一种方法,并将其称为$Module-> method_name.

或者,您可以使用符号参考,如perlref中所述.然而,这通常是一个很好的代码气味.

my @array = do {
    no strict 'refs';
    @{ ${ "${Module}::Array_inside_module" } };
};

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读