Язык программирования Perl

Встроенные документы


Еще одним видом непосредственной записи в программе текстовой информации являются так называемые встроенные документы (here-documents). Эта конструкция, заимствованная из командного языка Unix, представляет из себя встроенный в программу произвольный текст. Встроенный документ начинается символами <<, за которыми без пробелов указывается ограничитель, отмечающий конец документа. Все строки, начиная со следующей, рассматриваются как содержимое этого документа до тех пор, пока не встретится строка, состоящая только из указанного ограничителя. Обозначающий конец встроенного документа ограничитель должен записываться на отдельной строке с самого ее начала.

$here_document = <<END_OF_DOC; Здесь располагается текст встроенного документа, ограничитель которого записывается с начала на отдельной строке. END_OF_DOC

Если желательно записывать ограничитель с пробелами, то его нужно заключить в кавычки, а если он записан кириллицей, то нужно прагмой use locale включить учет национальных установок:

use locale; $here_document = <<'КОНЕЦ ДОКУМЕНТА'; ЭТО НЕ КОНЕЦ ДОКУМЕНТА КОНЕЦ ДОКУМЕНТА

Во встроенных документах производится интерполяция переменных, если только ограничитель here-документа не заключен в одинарные апострофы. Поэтому встроенные документы часто применяются для комбинирования предварительно отформатированного текста со значениями переменных, как это сделано в следующем примере:

$here_document = <<"END_OF_DOCUMENT"; # присваивание строке Уважаемый $guests[$n]! Приглашаем Вас на презентацию книги "$title", которая состоится $date в $time. Оргкомитет. END_OF_DOCUMENT print $here_document, '-' x 65, "\n";

Например, с помощью here-документа легко и удобно программно создать HTML-страницу, вставляя в нее нужную информацию:

$web_page = <<HTML; # поместить here-документ в переменную <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <meta http-equiv="content-type" content="text/html; charset=$encoding"/> <meta name="author" content="$author"/> <title>$title</title> </head> <body> <h3 style="text-align: center;">$header</h3> <div align="justify">$article{$number}</div> <p><a href="$hyperlink">Вернуться к разделу $topic</a><p> <hr/><small>Copyright © $year, $author.</small> </body> </html> HTML

Это один из способов динамического создания на web-сервере гипертекстовых страниц в ответ на запрос информации, например, хранимой в базе данных.



Содержание раздела