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



              

Многострочные значения - часть 2


Что значит имя? Роза пахнет розой Хоть розой назови ее, хоть нет. У.Шекспир, "Ромео и Джульетта"

Если заранее неизвестно минимальное количество выводимых строк, можно применить шаблон повторения многострочного поля (две тильды подряд в любом месте строки, ~~). В этом случае строка шаблона будет применяться многократно, пока не будет исчерпано многострочное значение, при этом пустые строки выводиться не будут. Тильды в шаблоне подавления пустых строк и в шаблоне повторения строк при выводе отчета заменяются на пробелы. Таким образом, формат в последнем примере можно заменить на следующий:

format STDOUT = ^* ~~ $text У.Шекспир, "Ромео и Джульетта" .

В результате будет выведен точно такой же отчет, как и с использованием предыдущего формата, но последний формат гораздо короче и выводит любое количество строк.

Для описания в формате текстового значения, которое должно выводиться на несколько строк, применяется поледержатель следующего вида: ^<<<<<. Это специальное поле иногда называется "заполняемым полем". Оно предназначается для форматирования текстового значения, которое при выводе в отчет делится на строки, не превышающие ширину шаблона. Деление на строки производится по границам слов. Источником выводимого текста обязательно должна быть переменная со скалярным значением, из которой при каждом ее употреблении в формате извлекается столько слов, сколько поместится в соответствующем поле отчета. Заполнение шаблона текстом и вывод отчета в несколько строк иллюстрирует следующий пример:

my $shakespeare = 'Две равно уважаемых семьи ' . 'В Вероне, где встречают нас событья, ' . 'Ведут междоусобные бои ' . 'И не хотят унять кровопролитья.'; my $text = $shakespeare; write STDOUT; # описание формата вывода format STDOUT = ~~ ^<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< $text У.Шекспир, "Ромео и Джульетта" .

В этом примере для организации неявного цикла вывода также применяется шаблон повторения строк, поскольку неизвестно, сколько строк будет заполнено выводимым текстом. При выполнении примера будет выведен текст в таком виде:

Две равно уважаемых семьи В Вероне, где встречают нас событья, Ведут междоусобные бои И не хотят унять кровопролитья. У.Шекспир, "Ромео и Джульетта"

Подобным образом в отчет выводятся блоки текстовой информации: примечания, описания, адрес и т. п.




Содержание  Назад  Вперед