Что означает ENDOFTEXT в этом Perl-коде? - PullRequest
10 голосов
/ 11 июля 2010

Я хотел бы знать, что означает 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);

Ответы [ 4 ]

10 голосов
/ 11 июля 2010

Это оператор, называемый heredoc или here-документом. Достаточно забавно, что найти ссылку на Perldoc не так просто, как следовало бы. Это полезно для возможности заключать в кавычки большой раздел текста без необходимости экранирования специальных переменных.

Вы также можете прочитать статью Here в статье в Википедии. Запись, которую вы ищете, это <<EOF в Операторы цитирования и цитирования, подобные от perldoc. Я привожу это здесь для простоты использования:

Линейно-ориентированная форма цитирования на основе оболочки "здесь-документ" синтаксис. После << вы указываете строка для завершения цитируемой материал и все строки, следующие за текущая линия до окончания Строка - это значение элемента. завершающая строка может быть идентификатор (слово), или некоторые цитируемые текст. Работает без кавычек как двойные кавычки. Там не может быть пространство между << и идентификатор, если идентификатор не является явно цитируется. (Если вы поставите пробел это будет рассматриваться как ноль действительный идентификатор и соответствует первой пустой строке.) </p>

The завершающая строка должна появляться сам (без кавычек и без окружающие пробелы) на завершающая линия.

Если прекращается строка в кавычках, тип кавычек используется для определения лечения текст.

9 голосов
/ 11 июля 2010

Это здесь документ или heredoc . ENDOFTEXT - это просто произвольная последовательность, которая отмечает его конец; это ничего не значит само по себе. (Я был бы более склонен использовать END, но это только личный вкус.)

7 голосов
/ 11 июля 2010

В дополнение к тому, что сказали другие люди, я должен отметить, что книга Perl Best Practices рекомендует избегать использования голых слов здесь-документов (например: "<

3 голосов
/ 11 июля 2010

Строка ENDOFTEXT обозначает начало и конец «здесь-документа». Это описано в официальной документации Perl (поиск по EOF): Операторы цитирования и цитирования . Это произвольная строка; код мог использовать строку FOO с тем же эффектом. Это позволяет многострочное цитирование, и в этом случае переменные будут интерполированы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...