ENDOFTEXT在这个Perl代码中的含义是什么?

时间:2010-07-11 16:43:28

标签: perl

我想知道这个Perl脚本中ENDOFTEXT的含义:

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);

4 个答案:

答案 0 :(得分:10)

它是一个运算符,称为heredoc或here-document。有趣的是,perldoc中的引用并不像应该的那样容易找到。它非常有用,能够引用大部分文本而无需担心转义特殊变量。

您也可以阅读维基百科上的Here document article。您要查找的条目是来自perldoc的Quote-and-Quote-like-Operators下的<<EOF。我在这里引用易用性:

  

以线为导向的形式是   基于shell“here-document”   句法。在&lt;&lt;&lt;&lt;你指定一个   用于终止引用的字符串   材料,以及跟随的所有线   当前行到终止   string是项的值。该   终止字符串可以是一个   标识符(一个单词),或一些引用的   文本。不带引号的标识符有效   像双引号。可能没有   &lt;&lt;&lt;&lt;&lt;&lt;和   标识符,除非标识符是   明确引用。 (如果你放一个空格   它将被视为null   标识符,有效,和   匹配第一个空行。)

     

在   终止字符串必须出现   本身(没有报价,没有报价   周围的空白)   终止线。

     

如果终止   引用字符串,引号的类型   用于确定治疗方法   文本。

答案 1 :(得分:9)

这是一个here-document或heredoc。 ENDOFTEXT只是一些标志着它结束的任意序列;它本身并不意味着什么。 (我更倾向于使用END,但这只是个人品味。)

答案 2 :(得分:7)

除了其他人所说的内容之外,我还应该注意,本书Perl Best Practices建议避免在这里使用裸字 - 文档(例如:“&lt;&lt;&lt; EOF”),而是明确引用每个here-doc作为&lt;&lt;'EOF'或&lt;&lt;“EOF”。这是因为人们通常不知道裸字EOF是什么情况。

答案 3 :(得分:3)

ENDOFTEXT字符串表示“here-document”的开头和结尾。官方Perl文档(搜索EOF):Quote-and-Quote-like-Operators中对此进行了描述。它是一个任意的字符串;代码可以使用具有相同效果的字符串FOO。它允许多行引用,在这种情况下,将插入变量。