gpt4 book ai didi

Perl,动态包含包

转载 作者:行者123 更新时间:2023-12-04 13:29:30 26 4
gpt4 key购买 nike

假设我有一个 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';

关于Perl,动态包含包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3470706/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com