2

stdin からコマンドを受け取り、有用な終了コードを返すプログラムユーティリティが与えられた場合、次の perl 構文が機能します。

my $result = `utility -switch1 -switch2 <<HERE
set ridin_round_the_world TRUE;
do this;
sign that;
try { 
   make some_girl; 
   return 0;
} 
except { 
   sleep --week;  
   exit 1;
}
HERE`;
print "result is $result\n";

「動作する」とは、perl スクリプトがユーティリティを起動し、コマンド リストにパイプを送り、ユーティリティが終了するまで待機し、結果を返すことを意味します。

しかし、なぜそれが機能するのですか?バックティックはどのようにしてプログラムを呼び出し、次に HERE ドキュメントにパイプすることを認識しますか? perl の実装で運が良かっただけですか、それともこれは標準的な動作ですか?

4

1 に答える 1

5

これはシェルのヒアドキュメントであり、Perl のものではありません。シェルで実行してみてください:

% cat <<EOF
some
thing
EOF
于 2011-04-08T19:15:56.130 に答える