Perl 6从字符串生成代码

时间:2017-10-16 12:06:42

标签: perl6

有没有办法将string变量插入code? 这就是我想要做的,当然它甚至都不会编译。

my $cmd = " + 5 ";
my $a = 3;

$a = $a { $cmd };
say $a;

1 个答案:

答案 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建议)