我有一个哈希表,其中包含int(rand())等命令。 我该如何执行这些命令?
答案 0 :(得分:5)
您可以使用eval($str)
执行存储在字符串变量$str
中的Perl代码。您也可以将代码作为函数引用存储在哈希中,例如:
$hash{'random'} = sub { int(rand()) };
这样,只要你想要一个随机值,就可以编写$hash{'random'}->()
来执行该函数。
另请参阅PerlMonks上的Implementing Dispatch Tables。
答案 1 :(得分:1)
正如其他人所说,你可以使用eval
执行它们。但请注意,通过eval
执行可能受污染的源的任意字符串是一个主要的安全漏洞,如果您的应用程序性能很重要,则容易变慢。
您可以使用Safe module删除安全漏洞(不确定它是多么好,但比裸eval
好得多),但性能问题将始终存在,因为Perl必须编译您的在执行主程序时执行代码。