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

Perl,动态包含包

发布时间:2020-12-15 21:15:51 所属栏目:大数据 来源:网络整理
导读:假设我有一个perl模块文件,我想在运行时动态包含和使用它.所述模块包括一个我需要实例化的类,直到运行时才知道它的名字. 例如, #inside module.pmpackage module;sub new {#setup object}#inside main.pl#get module.pm as argumentmy $module_var = #load r
假设我有一个perl模块文件,我想在运行时动态包含和使用它.所述模块包括一个我需要实例化的类,直到运行时才知道它的名字.

例如,

#inside module.pm

package module;

sub new {
#setup object
}

#inside main.pl

#get module.pm as argument
my $module_var = #load reference to module using text argument?
my $module_instance = $module_var->new();

解决方法

这可以在没有eval的情况下完成,如下所示:
my $module_name = 'Some::Module';

(my $require_name = $module_name . ".pm") =~ s{::}{/}g;

require $require_name;

my $obj = $module_name->new();

如果您需要多次执行此操作,只需将该代码包装在子例程中:

sub load_module {
    for (@_) {
        (my $file = "$_.pm") =~ s{::}{/}g;
        require $file;
    }
}

load_module 'Some::Module','Another::Module';

(编辑:李大同)

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

    推荐文章
      热点阅读