» язык
perl
» Главная
страница
» Вернуться
к содержанию ( Perl )
Форматы
В
Perl реализован удобный метод
создания форматированных отчетов.
С помощью оператора format вы
описываете заголовки, размеры
полей, указываете положение
данных на листе в удобной текстовой
форме. Затем выполняете команду
write(файл), которая выводит
отформатированные данные в указанный
файл.
Оператор
format имеет следующий синтаксис:
format
имя =
FORMLIST
Обратите
внимание на то, что описание
формата идет после строки format
и заканчивается символом “.”
в начале строки.
Здесь
“имя” — это имя формата, такое
же как и имя указателя выходного
файла. Если “имя” отсутствует
то значение по умолчанию — STDOUT.
FORMLIST
— это строки формата. Они бывают
трех типов:
¦ Комментарий.
Строка начинается символом '#'.
¦ Описатель
полей данных (picture).
¦ Строка
аргументов используемых описателем.
Описатель
— это строка, которая выводится
в виде “как есть” за исключением
специально обозначенных форматов
полей данных. Каждое поле начинается
либо символом “@”, либо “^”.
В описательной строке указывается
только положение и вид выводимых
данных, но не имена полей и
переменных. Для этого предназначена
следующая строка аргументов
которая следует всегда после
описателя и содержит имена переменных
или целые выражения в порядке
указанном описателем.
Размер
и вид поля в описателе обозначается
следующими символами:
¦ <<<<
— выровнять значение по правому
краю.
¦ >>>>
— выровнять значение по левому
краю.
¦ ||||
— выровнять значение по центру.
¦ ####.###
— формат числа с точкой.
¦ @*
— многострочная строка. Данные
выводятся в колонку.
Размер
поля равен количеству указанных
символов.
Символ
“^” в начале поля имеет специальное
значение.
Так:
¦ ^####
— пусто если переменная не определена.
Для
строчного скаляра:
¦ ^<<<<<
— выводится сколько возможно
символов, а значение переменной
меняется на остаток, вывод которого
можно продолжить на следующих
строках, которые могут иметь
свои поля.
Пример:
#!/usr/local/bin/perl
#
#
Программа печати пригласительного
билета
#
$кому
= "Чапаеву Василию Ивановичу";
$от_кого
= "Компания МММ";
$адрес
= "Москва, ул. Петровка,
д 38";
$текст
= "Уважаемый Василий Иванович!
Компания МММ имеет честь пригласить
Вас и Ваших близких на презентацию
наших новых хромовых сапог,
сделанных на уровне мировых
стандартов качества и дизайна.";
format
STDOUT =
П
Р И Г Л А С И Т Е Л Ь Н Ы Й
Б И Л Е Т
--------------------------------------------------------------
Кому:
@<<<<<<<<<<<<<<<<<<<<<<<<<<
| ^|||||||||||||||||||||||||||||||
$кому, $текст | ^|||||||||||||||||||||||||||||||
$текст От кого: @<<<<<<<<<<<<<<<<<<<<<<<
| ^|||||||||||||||||||||||||||||||
$от_кого, $текст | ^|||||||||||||||||||||||||||||||
$текст Адрес:@<<<<<<<<<<<<<<<<<<<<<<<<<<
| ^|||||||||||||||||||||||||||||||
$адрес, $текст | ^|||||||||||||||||||||||||||||||
$текст | ^|||||||||||||||||||||||||||||||
$текст | ^|||||||||||||||||||||||||||||||
$текст Отпечатано в типографии
ИТУ 38 . write(); # Вывод данных.
exit 0; # Конец программы
Результат:
П
Р И Г Л А С И Т Е Л Ь Н Ы Й
Б И Л Е Т
--------------------------------------------------------------
Кому:
Чапаеву Василию Ивановичу |
Уважаемый Василий Иванович!
|
Компания МММ имеет честь
|
пригласить
От
кого: Компания МММ | Вас и Ваших
близких
|
на презентацию наших новых
|
хромовых сапог,
|
Адрес:Москва, ул. Петровка,
д 38
|
сделанных на уровне мировых
|
стандартов качества и дизайна.
--------------------------------------------------------------
Отпечатано
в типографии ИТУ 38
Специальные
переменные:
¦ $~
— построчный формат содержимого.
¦ $^
— формат заголовка листа.
¦ $%
— номер листа.
¦ $=
— строк в листе.
Если
вы хотите использовать одни
и те же форматы для разных файлов,
то самый простой путь:
use
FileHandle; # Указать в начале
программы
format_name
файл имя_формата; # Формат содержимого
листа.
format_top_name
файл имя_формата; # Формат заголовка
листа.
write(файл);
# вывод данных.
Здесь
“файл” имеется ввиду указатель
файла полученный командой open();
Если
вам нужно в теле листа выводить
разного рода форматы (например
заголовки групп или отбивку
листа), то применяйте format_name.
Следующий
урок
|