Заменим формат STDOUT программы примера 8.1 на следующий:
format STDOUT =
-<«««««««««««« | @»»»»>» | @||||||| | @##it f @###.##р.
$author, $title, $pub, $year, $price
Л ««««««««««<«« | | I | ~
$author
Теперь вывод нашей программы будет выглядеть так:
В.Долженков Ю.Колесников I Excel 2000 | BHV | 1999 | 90.00р.
А.Матросов А.Сергеев | ' HTML 4.О Г BHV | 1999 | 70.00р.
М.Чаунин I I II
Т.Кристиансен Н.Торкингтон I Perl | Питер | 20.00 | 100.00р.
Символ тильда "~" в конце строки Шаблона подавляет вывод пустых строк. Если не поставить его, то между первой и второй книгой в нашем отчете появится дополнительная строка, как если бы была выведена вторая строка шаблона с пустым значением переменной $author. Символ подавления вывода пустых строк можно задавать в любом месте строки шаблона, помня, что при выводе он отображается, как пробел.
В нашем примере мы знали, что данные в переменной $author He займут более двух строк при выводе. Поэтому в формате мы использовали эту информацию, добавив еще одну строку шаблона с переменной $author. А что делать, если не известно количество строк продолжения в которых будут выводиться данные? Можно воспользоваться двумя идущими подряд символами тильда вместо одного. В этщ случае алгоритм буферизации данных по словам будет продолжаться до завершения вывода всех данных переменной. Если наш формат изменить на следующий
format STDOUT = . _....,..,... . ; ,
Л <«««««««««««« | @»»»»>» ,| @| | | | || | | в#### I @###.-##р.
$author, $title, $pub, $year, $price
$author
а во вторую книгу добавить еще парочку авторов, то вывод записи об этой книге нашей программой будет иметь следующий вид:
А.Матросов А.Сергеев | HTML 4.0 I BHV | 1999 | 70.00р.