Иллюстрированный самоучитель по Perl



         

Объявление формата - часть 5


Заменим формат 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р.




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