私はperlスクリプトをPythonに変換していましたが、私は理解できないこの関数を発見しました。perl eval with back quote
sub set_xyz_hash {
%xyz =();
$_ = join(' ', map { my $a = $_; $a =~ s/\'/\'\"\'\"\'/g; "'$a'" } @ARGV);
eval `XYZ_ARG0='$0' NZENV_OUTPUT='-a -p xyz' xyz $_`;
}
Perlでの私の知識は非常に限られているため、私は、この機能で使用される「evalの」をを理解することができませんでした。誰かが私をここで助けてくれますか?
注、evalはwth `(バッククォート)です。
この文を評価する代わりに(またはそれに加えて)*** print ***を試してください。つまり、 'print 'XYZ_ARG0 =' $ 0 'NZENV_OUTPUT =' - a -p xyz 'xyz $ _' 、 "\ n"; '。実際に何が実行されるかを見ることができます。 'eval'はそのコマンドの出力をPerlコードとして実行します。 – PerlDuck
実行されているコマンドを信頼する必要があります。これはいくつかの観点から非常に危険です。 –