Учетная карточка пользователя N 00001
---------------------------------------------------------
Фамилия Wall | Login larry
Имя Larry | Группа root
Отчество |
E-mail larry@wall.org | Телефон +123456789
Ограничение дискового пространства 9876,54 Мегабайт
---------------------------------------------------------
Дата регистрации 18 декабря 1987 года
В каждую из выводимых в отчет карточек помещаются данные из одной записи входного файла.
Без указания файлового манипулятора вывод отчета функцией
$old_handle = # сохранить файловый манипулятор
select $new_handle; # переключиться на новый поток
write; # вывести в новый поток
select $old_handle; # восстановить предыдущий поток
При формировании сложного отчета может потребоваться возможность переключаться на разные форматы отчета. Установить для какого-либо потока определенный формат отчета можно путем присваивания имени формата переменной
$old_handle = select $out; # выбрать поток для отчета
$^ = 'REPORT_TOP'; # назначить формат для шапки отчета
$~ = 'REPORT'; # назначить формат для отчета
write $out; # вывести в $out по формату REPORT
select $old_handle; # вернуться к предыдущему потоку
Назначать для определенного потока формат отчета и заголовок страницы гораздо удобнее с помощью функций
use FileHandle; # подключить модуль работы с файлами
# назначить для потока $report формат отчета REPORT
format_name $report REPORT;
# назначить для потока $report формат заголовка PAGE
format_top_name $report PAGE;
# используя назначенные форматы,
write $report; # вывести строку отчета в $report
Обратите внимание, что при обращении к функциям
Пока что в примерах использовались только обычные поля (regular fields), которые описываются поледержателями, начинающимися с символа @. Поледержатели, описание которых начинается с символа ^, представляют так называемые специальные поля (special fields), обладающие возможностью дополнительной обработки данных. Так, специальные числовые поля (например, ^###), содержащие неопределенное значение (undef), заполняются пробелами. Обычные числовые поля (например, @###) в этом случае выводят нули. Это демонстрирует следующий пример:
format STDOUT =
обычное:'@##.##' специальное:'^####'
undef, undef
.
write STDOUT; # вывод данных по формату в STDOUT
# выведет: обычное:' 0.00' специальное:' '
Специальные текстовые поля (например, ^<<<) используются для вывода в отчет данных, располагающихся на нескольких строках.
Вильям Л Саймон , Вильям Саймон , Наталья Владимировна Макеева , Нора Робертс , Юрий Викторович Щербатых
Зарубежная компьютерная, околокомпьютерная литература / ОС и Сети, интернет / Короткие любовные романы / Психология / Прочая справочная литература / Образование и наука / Книги по IT / Словари и Энциклопедии