V Pel realizovan udobnyj metod sozdaniya formatirovannyh
otchetov. S pomoshch'yu operatora format vy opisyvaete zagolovki,
razmery polej, ukazyvaete polozhenie dannyh na liste v udobnoj
tekstovoj forme. Zatem vypolnyaete komandu write(fajl) kotoraya
vyvodit otformatirovannye dannye v ukazannyj fajl.
Operator format imeet sleduyushchij sintaksis:
format imya =
FORMLIST
.
Obratite vnimanie na to chto opisanie formata idet posle stroki format i zakanchivaetsya
simvolom '.' v nachale stroki.
Zdes' 'imya' - eto imya formata, takoe zhe kak i imya ukazatelya vyhodnogo fajla.
Esli 'imya' otsutsvuet to znachenie po umolchaniyu - STDOUT.
FORMLIST - eto stroki formata. Oni byvayut treh tipov:
1. Kommentarij. Stroka nachinaetsya simvolom '#'.
2. Opisatel' polej dannyh (picture).
3. Stroka argumentov ispol'zuemyh opisatelem.
Opisatel' - eto stroka kotoraya vyvoditsya v vide "kak est'" za isklyucheniem
special'no oboznachennyh formatov polej dannyh. Kazhdoe pole nachinaetsya
libo simvolom '@' libo '^'.
V opisatel'noj stroke ukazyvaetsya tol'ko polozhenie i vid
vyvodimyh dannyh, no ne imena polej i peremennyh.
Dlya etogo prednaznachena sleduyushchaya stroka argumentov kotoraya sleduet vsegda
posle opisatelya i soderzhit imena peremennyh ili celye vyrazheniya
v poryadke ukazannom opisatelem.
Razmer i vid polya v opisatele oboznachaetsya sleduyushchimi simvolami:
">>>>" - vyrovnit' znachenie po pravomu krayu.
"<<<<" - -//- po levomu.
"||||" - -//- po centru.
"####.###" - format chisla s tochkoj.
"@*" - mnogostrochnaya stroka. Dannye vyvodyatsya v kolonku.
Razmer polya raven kolichestvu ukazannyh simvolov.
Simvol '^' v nachale polya imeet special'noe znachenie.
Tak:
"^####" - pusto esli peremennaya ne opredelena.
dlya strochnogo skalyara:
"^<<<<<" - Vyvoditsya skol'ko vozmozhno simvolov, a znachenie
peremennoj menyaetsya na ostatok vyvod kotorogo mozhno prodolzhit' na
sleduyushchih strokah kotorye mogut imet' svoi polya.
Primer:
#!/usr/local/bin/perl
#
# Programma pechati priglasitel'nogo bileta
#
$komu = "CHapaevu Vasiliyu Ivanovichu";
$ot_kogo = "Kompaniya MMM";
$adres = "Moskva, ul. Petrovka, d 38";
$tekst = "Uvazhaemyj Vasilij Ivanovich! Kompaniya MMM imeet chest' priglasit'
Vas i Vashih blizkih na prezentaciyu nashih novyh hromovyh sapog, sdelannyh
na urovne mirovyh standartov kachestva i dizajna.";
format STDOUT =
P R I G L A S I T E L X N Y J B I L E T
----------------------------------------------------------------------
Komu: @<<<<<<<<<<<<<<<<<<<<<<<<<< | ^|||||||||||||||||||||||||||||||
$komu, $tekst
| ^|||||||||||||||||||||||||||||||
$tekst
Ot kogo: @<<<<<<<<<<<<<<<<<<<<<<< | ^|||||||||||||||||||||||||||||||
$ot_kogo, $tekst
| ^|||||||||||||||||||||||||||||||
$tekst
Adres:@<<<<<<<<<<<<<<<<<<<<<<<<<< | ^|||||||||||||||||||||||||||||||
$adres, $tekst
| ^|||||||||||||||||||||||||||||||
$tekst
| ^|||||||||||||||||||||||||||||||
$tekst
| ^|||||||||||||||||||||||||||||||
$tekst
----------------------------------------------------------------------
Otpechatano v tipografii ITU 38
.
write(); # Vyvod dannyh.
exit 0; # Konec programmy
Rezul'tat:
P R I G L A S I T E L X N Y J B I L E T
----------------------------------------------------------------------
Komu: CHapaevu Vasiliyu Ivanovichu | Uvazhaemyj Vasilij Ivanovich!
| Kompaniya MMM imeet chest'
Ot kogo: Kompaniya MMM | priglasit' Vas i Vashih blizkih
| na prezentaciyu nashih novyh
Adres:Moskva, ul. Petrovka, d 38 | hromovyh sapog, sdelannyh na
| urovne mirovyh standartov
| kachestva i dizajna.
|
----------------------------------------------------------------------
Otpechatano v tipografii ITU 38
Special'nye peremennye:
$~ - postrochnyj format soderzhimogo.
$^ - format zagolovka lista.
$% - nomer lista.
$= - strok v liste.
Esli vy hotite ispol'zovat' odni i te zhe formaty dlya raznyh fajlov
to samyj prostoj put':
use FileHandle; # Ukazat' v nachale programmy
format_name fajl imya_formata; # Format soderzhimogo lista.
format_top_name fajl imya_formata; # Format zagolovka lista.
write(fajl); # vyvod dannyh.
Zdes' 'fajl' imeetsya vvidu ukazatel' fajla poluchennyj komandoj open();
Esli vam nuzhno v tele lista vyvodit' raznogo roda formaty (naprimer
zagolovki grupp ili otbivku lista) to primenyajte format_name.
Last-modified: Thu, 24 Apr 1997 17:46:23 GMT