2010-07-11 46 views
10

我想知道是什麼意思ENDOFTEXT在這個Perl腳本:ENDOFTEXT在此Perl代碼中的含義是什麼?

print <<ENDOFTEXT; 
HTTP/1.0 200 OK 
Content-Type: text/html 

<HTML> 
<HEAD><TITLE>Hello World!</TITLE></HEAD> 
<BODY> 
<H4>Hello World!</H4> 
<P>You have reached <a href="$url">$url</a></P> 
<P>Your IP Address is $ip</P> 
<H5>Have a nice day!</H5> 
</BODY> 
</HTML> 
ENDOFTEXT 
exit(0); 

回答

10

它是一個運算符,稱爲heredoc或here-document。有趣的是,perldoc中的引用並不像它應該那樣容易找到。能夠引用大部分文本而不必費力地轉義特殊變量是很有用的。

您也可以在維基百科上閱讀Here document article。您正在尋找的條目是來自perldoc的Quote-and-Quote-like-Operators下的<<EOF。我在這裏引用它的易用性:

引用的面向行的形式是 基於殼「這裏的文檔」 語法。在< <之後,您指定一個 字符串來終止所引用的 材料,並且 當前行後面的所有行都向下,直到終止 字符串爲該項目的值。終止字符串的 可能是 標識符(一個字)或某些引用的 文本。未加引號的標識符的工作原理與雙引號一樣,爲 。 < <和 標識符之間可能沒有 間隔,除非標識符是明確引用的 。 (如果你把一個空間 它將被視爲空 標識符,它是有效的,並且 第一個空行相匹配。)

的 終止字符串必須由 本身(不帶引號和不 周圍出現空格)在 終止行。

如果終止的 字符串被引用,則引用 的類型將決定處理 文本。

9

這是一個在這裏的文檔或heredoc。 ENDOFTEXT只是一些任意序列,標誌着它的結束;它本身並不意味着什麼。 (我會更傾向於使用END,但這只是個人的喜好。)

3

ENDOFTEXT字符串表示「here-document」的開始和結束。它在官方的Perl文檔中有描述(搜索EOF):Quote-and-Quote-like-Operators。它是一個任意字符串;代碼可能使用字符串FOO具有相同的效果。它允許多行引用,在這種情況下,變量將被內插。

7

除了別人說,我要指出的是,本書Perl Best Practices建議避免使用裸字在這裏 - 文檔(如:「< < EOF」),而是明確地引用每一個在這裏-doc的作爲或者< <「EOF '或< <「EOF」。這是因爲人們常常不知道裸字EOF的情況。