我想知道这个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);
答案 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
。它允许多行引用,在这种情况下,将插入变量。