Perl 6 从字符串生成代码
Perl 6 make code from string
有没有办法将 string
变量插入到 code
中?
这就是我想要做的,当然它甚至不会编译。
my $cmd = " + 5 ";
my $a = 3;
$a = $a { $cmd };
say $a;
您可以尝试使用 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 所建议)
有没有办法将 string
变量插入到 code
中?
这就是我想要做的,当然它甚至不会编译。
my $cmd = " + 5 ";
my $a = 3;
$a = $a { $cmd };
say $a;
您可以尝试使用 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 所建议)