「string-eval」が使用できることを理解しています。しかし、私はそれなしでそれを達成するためのいくつかの代替手段を探していeval
ます. 「string-eval」である理由はPerl評論家に失敗し、クライアントポリシーに従って使用できません。
なしでそれを行うための代替手段は何eval
ですか?
これが私がやろうとしていることです:
動的に生成されたコード参照を関数に渡しています。この関数は、このコード参照を評価し、結果を変数に割り当てます。
「string-eval」が使用できることを理解しています。しかし、私はそれなしでそれを達成するためのいくつかの代替手段を探していeval
ます. 「string-eval」である理由はPerl評論家に失敗し、クライアントポリシーに従って使用できません。
なしでそれを行うための代替手段は何eval
ですか?
これが私がやろうとしていることです:
動的に生成されたコード参照を関数に渡しています。この関数は、このコード参照を評価し、結果を変数に割り当てます。
「文字列をperlコードとして解釈して実行する」ことは一般に問題の解決策としては不十分であるため、Perlの批評家はstring-evalに反対します。
同じことを行う別の関数を見つけるだけでは回避できません(まあ、できますが、それでは完全に要点が欠けています)。
コードリファレンスを実行する必要はありませんeval
。コードリファレンスを逆参照して呼び出すだけです。これはperldoc perlrefで説明されています。
my $code = sub {
my ($name) = @_;
say "Hi, $name!";
};
$code->('rpg');
これは私にとってはうまくいきます。
#!/usr/bin/perl
use strict;
use warnings;
sub exec_code {
my ($c) = @_;
return &{$c};
}
my $coderef = sub {
print "Hello, from sub";
};
exec_code($coderef);