Подтвердить что ты не робот

Что означает ENDOFTEXT в этом коде Perl?

Я хотел бы знать, что означает ENDOFTEXT в этом Perl script:

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

Ответ 1

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

Вы можете прочитать здесь статью документа о википедии. Запись, которую вы ищете, находится <<EOF под Quote-and-Quote-like-Operators от perldoc. Я цитирую его здесь для удобства использования:

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

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

Если завершение строка цитируется, тип котировок используются для определения текст.

Ответ 2

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

Ответ 3

В дополнение к тому, что говорили другие люди, я должен отметить, что книга Perl Best Practices рекомендует избегать использования bareword here-docs (например: "< < EOF" ) и вместо этого явно цитирует каждый здесь-doc как либо < EEF ', либо < EOF. Это связано с тем, что люди часто не знают, что происходит в EOF с открытым словом.

Ответ 4

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