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



         

Использование нескольких форматов - часть 2


while (<BOOKS>) {

($author, $title, $pub, $year, $price) = split(':'); # Разбиение строки

t по символу ':'

write; # Форматный вывод строки $total += $price; t Подсчет общей суммы

}

$~ = TOTAL; # Переключение формата

write; # Вывод по формату итоговой строки

format STDOUTJTOP =

Заказ № @#

$ number Автор Название Издатель Год Цена

format STDOUT = '

Л <«««««««««««« | @»»»»>» | @М!11М I @t### I @###.##р.

$author, $title, $pub, $year, $price

A «««««««««<««« | | | | ~~

$author

format TOTAL =

Итого: @###.##р. $total

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

Заказ № I Автор Название Издатель Год Цена

В.Долженков Ю.Колесников I Excel 2000 I BHV | 1999 I 90.00р.

А.Матросов А.Сергеев I HTML 4.0 I BHV | 1999 | 70.00р.

М.Чаунин I I II

Т.Кристиансен Н.Торкингтон I Perl I Питер | 2000 | 100.00р.

Итого: 260.00р.

В завершение разговора о создании отчетов в Perl мы модифицируем программу примера 8.1, приспособив ее для печати отчета на основании информации о книгах из файла books, в котором в записи о книгах добавлено еще одно поле, содержащее краткую аннотацию книги:

В.Долженков Ю.Колесников:Excel 2000:BHV:1999:90:Аннотация книги

Отчет, формируемый этой программой (пример 8.3), также печатает нижний колонтитул на каждой странице. Для этого мы воспользуемся специальной переменной $ л ь, содержимое которой Perl печатает перед переходом на новую страницу во время форматного вывода. При этом следует уменьшить на количество строк, заданных в этой переменной, количество строк на странице, хранящееся в специальной переменной $=, иначе строки из переменной $ л ь попадут не в конец текущей страницы, а будут напечатаны на следующей странице, не создав никакого нижнего колонтитула.




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