9

重複の可能性:
<<'ESQ' を使用したこの Perl ステートメントを理解するのを手伝ってください

https://stackoverflow.com/questions/4151279/perl-print-eofのステートメントは正確に何をしていますか? 前の投稿に出くわしましたが、彼が何を説明しようとしているのか理解できませんでした。それは何PETEですか?誰もすべての行を説明できますか? コードはどのように機能していますか?

print <<EOF;
This is
a multiline
string
EOF

print <<PETE;
This is
a multiline
string
PETE

これら2つの違いと類似点は何ですか? 代わりにPETEI のように他の多くの言葉を使用DOGしましたが、毎回同じように機能します。


Selenium はアプレットをネイティブにサポートしていません。アプレットを使用するために Selenium を拡張するには、外部ツールを見つける必要があります。http://docs.codehaus.org/display/FEST/Selenium を試す

4

2 に答える 2

23

これはヒアドキュメントと呼ばれます。基本的に、次の行から終了マーカー行までのすべてを取得し、実行中のプログラムへの標準入力として提示します。エンド マーカー ラインは、 に続くテキストによって制御されます<<

例として、bash(私は Perl よりもよく知っています) では、次のコマンドを実行します。

cat <<EOF
hello
goodbye
EOF

が実行catされ、標準入力に 2 行 (hello と goodbye 行) が送信されます。Perl にもこの機能がありますが、構文は少し異なります (言語が異なるため、ご想像のとおり)。それでも、説明がまだ保持されるのに十分近いです。

ウィキペディアには、ヒアドキュメントと呼ばれていることを知っていればおそらく見つけたであろうエントリがありますが、そうでなければ、それを理解するのはかなり難しいでしょう.

EOFあなたの特定のケースでは、 と の使用に違いはありません。ヒアドキュメント マーカー ( の後のビット) と標準入力の終わりのPETE間には関係があります。<<

たとえば、入力行の 1 つが である場合EOF、標準入力が途中で終了するため、それをマーカーとして実際に使用することはできません。

cat <<EOF
This section contains the line ...
EOF
but then has more stuff
and this line following is the real ...
EOF

その場合、使用できますPETE(または、テキスト自体の行に表示されないその他のもの)。

マーカーを引用符で囲んだり (インデントの見栄えを良くするため)、一重引用符または二重引用符を使用して変数置換を制御するなど、他のオプションもあります。

ページに移動してperlopを検索すると<<EOF、うまくいけばすべてが明らかになります。

于 2012-08-14T08:20:06.427 に答える
11

Quote および Quote-like Operatorsを参照してください(かなり詳しく説明されています)。

于 2012-08-14T08:21:38.343 に答える