我在一个 perl 项目上工作,我必须动态使用 perl 模块。我有以下名为 CT.pm 的模块:
sub new {
my $class = shift;
my ($debug, $debug_matches,%checkHash) = @_;
my $self = {};
$self->{DEBUG} = shift;
$self->{DEBUG_MATCHES} = shift;
$self->{CHECKRESULT_OK} = "COMPLIANT";
$self->{CHECKRESULT_ERROR} = "NONCOMPLIANT";
%{$self->{checkHash}} = %checkHash;
eval{
use $checkHash{"type"};
$check = $checkHash{"type"}->new($self->{DEBUG},$self->{DEBUG_MATCHES},%checkHash);
};
bless($self,$class);
return $self;
}
此构造函数获取一个名为 %checkHash 的哈希作为参数。这个散列有一个称为类型的键。此键映射到我要动态使用的 perl 模块名称的值。
我想出了以下方法:(我知道这行不通,我也知道人们说 eval 不好):
eval{
use $checkHash{"type"};
$check = $checkHash{"type"}->new($self->{DEBUG},$self->{DEBUG_MATCHES},%checkHash);
};
但想法是动态地使用名称为 $checkHash{"type"} 的 perl 模块。
如果有人对如何做到这一点有任何想法,请帮助:) thx!:D