这称为here-doc。它基本上抓取从下一行到结束标记行的所有内容,并将其作为标准输入呈现给您正在运行的程序。结束标记线由 . 后面的文本控制<<
。
例如,在bash
(我比 Perl 更熟悉)中,命令:
cat <<EOF
hello
goodbye
EOF
将运行cat
,然后将两行发送到其标准输入(hello 和 goodbye 行)。Perl 也有这个特性,尽管语法略有不同(正如你所期望的,因为它是一种不同的语言)。尽管如此,它仍然足够接近解释仍然成立。
Wikipedia 有一个条目,如果您知道它被称为 here-doc,您可能会发现它,但否则很难弄清楚。
EOF
在您的特定情况下,使用and之间没有区别PETE
,heredoc 标记(后面的位<<
)和标准输入的结尾之间存在关系。
例如,如果您的输入行之一是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
,希望一切都会变得清晰。