Perl,动态地包括包 [英] Perl, dynamically include package
本文介绍了Perl,动态地包括包的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
例如,
#inside module.pm
包模块;
sub new {
#setup对象
}
#inside main.pl
#get module.pm as参数
我的$ module_var = #load引用模块使用文本参数?
我的$ module_instance = $ module_var-> new();
解决方案
这可以在没有eval的情况下完成如下: p>
我的$ module_name ='Some :: Module';
(我的$ require_name = $ module_name。.pm)=〜s {::} {/} g;
require $ require_name;
我的$ obj = $ module_name-> new();
如果您需要多次执行此操作,只需将该代码包含在子程序中:
sub load_module {
for(@_){
(my $ file =$ _。pm) =〜s {::} {/} g;
需要$文件;
}
}
load_module'Some :: Module','Another :: Module';
Let's say I have a perl module file and I want to include and use it dynamically at runtime. Said module includes a class that I need to instantiate without knowing its name until runtime.
For example,
#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();
解决方案
This can be done without eval as follows:
my $module_name = 'Some::Module';
(my $require_name = $module_name . ".pm") =~ s{::}{/}g;
require $require_name;
my $obj = $module_name->new();
If you need to do this many times, just wrap up that code in a subroutine:
sub load_module {
for (@_) {
(my $file = "$_.pm") =~ s{::}{/}g;
require $file;
}
}
load_module 'Some::Module', 'Another::Module';
这篇关于Perl,动态地包括包的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文