我有一个带有哈希表的字符串,我想使用Perl eval
将其分配给引用变量。考虑:
use warnings;
use strict;
use Data::Dump qw(dump);
my $h;
my $str=q/$h={a=>'a',b=>'b'}/;
eval($str);
if ($@) {
print "An error occured processing the string\n";
die $@;
}
dump($h);
问题是该字符串实际上是由用户提供的(从文件中读取),我想防止恶意代码在eval
中执行。是否可以检查字符串是否仅表示变量赋值(不是像unlink my_important_file;
这样的代码?)