私は 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 というハッシュをパラメーターとして取得します。このハッシュには type というキーがあります。このキーが動的に使用したい perl モジュールの名前にマップされる値。
私はそれを行うための次の方法を思いつきました:(これは機能しないことを知っており、evalが悪いと人々が言うことも知っています):
eval{
use $checkHash{"type"};
$check = $checkHash{"type"}->new($self->{DEBUG},$self->{DEBUG_MATCHES},%checkHash);
};
しかし、アイデアは、$checkHash{"type"} という名前の perl モジュールを動的に使用することです。
誰かがこれを行う方法について何か考えを持っている場合は、plsを助けてください:) thx! :D