有没有办法将string
变量插入code
?
这就是我想要做的,当然它甚至都不会编译。
my $cmd = " + 5 ";
my $a = 3;
$a = $a { $cmd };
say $a;
答案 0 :(得分:3)
您可以尝试使用EVAL
,但请注意,如果您无法完全控制要评估的字符串,则使用EVAL
会很危险(例如,请考虑EVAL 'shell "rm -rf *"'
之类的内容):
use MONKEY-SEE-NO-EVAL;
my $cmd = " + 5 ";
my $a = 3;
$a = EVAL( EVAL '$a ~ $cmd' );
say $a;
<强>输出强>:
8
注意强>:
行$a = EVAL( EVAL '$a ~ $cmd' )
将连接运算符合并到要计算的字符串中。如果没有必要,可以将其简化为$a = EVAL( $a ~ $cmd )
(由@ W4anD0eR96建议)