可能重复:
如何在 Perl 中实现调度表?
我有一个包含诸如 int(rand()) 等命令的哈希表。如何执行这些命令?
您可以使用eval($str)
执行存储在字符串变量中的 Perl 代码,$str
. 您也可以将代码作为函数引用存储在哈希中,例如:
$hash{'random'} = sub { int(rand()) };
这样,您可以$hash{'random'}->()
在需要随机值时编写执行函数。
另请参阅在 PerlMonks 上实现调度表。
正如其他人所说,您可以使用eval
. 但是,请注意,执行可能被污染的任意字符串 viaeval
是一个主要的安全漏洞,并且如果您的应用程序的性能很重要,它也很容易变慢。
您可以使用Safe 模块来消除安全漏洞(不确定这有多防弹,但比裸机好得多eval
),但性能问题将始终存在,因为 Perl 必须在执行代码之前编译您的代码,同时执行主程序。