所以我 figured out 如何加载一个直到运行时才知道 $module_name 的模块。

现在,我希望访问一个哈希键,它的值恰好是一个 CODEREF。

my $hash_key = 'SOME_KEY';
my $code_ref = ${$module_name::hash}{$hash_key};

然后说:
$code_ref->(@args);
${$module_name::hash}{$hash_key} 对我来说很奇怪,我想知道它是否按预期工作?

最佳答案

有点。您编写的内容将不起作用( $module_name::hash$hash 包中的标量变量 module_name ),但这将:

my $code_ref = ${$module_name . "::hash"}{$hash_key};
use strict 'refs' 不鼓励和禁止这种构造。我不知道您的用例是什么,但要考虑的另一种方法是在动态加载的模块中实现一些常用方法。
my $code_ref = $module_name->getCode($hash_key);
$code_ref->(@args);

关于perl - 访问其模块直到运行时才知道的模块的哈希键,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34424506/

10-11 22:32
查看更多