我理解“string-eval”可以用于它。但我正在寻找一些替代方案来实现它eval
。理由是“字符串评估”失败了perl评论家,根据客户政策,我不能使用它。
所以,如果没有eval
,请告诉我一些替代方法。
以下是我要做的事情:
我将动态生成的代码ref传递给函数。此函数评估此代码ref并将结果分配给变量。
答案 0 :(得分:9)
Perl批评对象为字符串eval,因为“将字符串解释为perl代码并执行它”通常是解决任何问题的不良解决方案。
你不能通过找到另一个功能来做同样的事情来解决它(好吧,你可以,但那将完全忽略了这一点)。
答案 1 :(得分:6)
Coderefs不需要运行eval
。只需取消引用coderef即可调用它。这在perldoc perlref中解释。
my $code = sub {
my ($name) = @_;
say "Hi, $name!";
};
$code->('rpg');
答案 2 :(得分:0)
这适合我。
#!/usr/bin/perl
use strict;
use warnings;
sub exec_code {
my ($c)=@_;
return &{$c};
}
my $coderef = sub {
print "Hello, from sub";
};
exec_code($coderef);