Formát


Dosud jsme pro zapis dat na výstup používali příkaz print. Potřebujeme-li však výstupní data uspořádat do sloupců, uvést hlavičkou nebo proložit pevným textem použijeme tzv. formátovaný výstup. Vzhled výstupu je dán předem definovaným formátem. Definici formátu je možné uvést kdekoli v programu. Tento druh výstupu provádí příkaz write.


Definice formátu

Vzhled výstupu se specifikuje definicí formátu. Definice formátu začíná slovem format a končí řádkou obsahující pouze tečku.

Příklad definice formátu:

format MUJFORMAT =       # slovo format, jméno formatu a znak =
====== radka s pevnym textem ======   
Moje jmeno je @<<<<<<<<<< a prijmeni @<<<<<<<<<<<<<<   # vzhled řádky s promennou
$jmeno, $prijmeni        # proměnné, jejichž obsah se tiskne, oddělené čárkou
.                        # ukončení definice formátu - znak tečka 
Sekvence znaků @<<<<<<<<<< definuje vzor pro proměnnou $jmeno. Jde o vlevo zarovnaný text, který má 11 znaků.


Použití formátu

Definovaný formát se použije při tisku příkazem write. Parametrem příkazu write je logické jméno výstupního souboru, které je stejné se jménem použitého formátu (implicitně).

Příklad:

open (MUJFORMAT,">seznam.txt") || die "nelze vytvorit soubor seznam.txt";
$jmeno = Jan;
$prijmeni = Novak;
write MUJFORMAT;
Výsledek tisku při použití výše definovaného formátu:

====== radka s pevnym textem ======
Moje jmeno je Jan         a prijmeni Novak

Všimněte si, že je potřeba před tiskem otevřít výstupní soubor, jehož logické jméno je stejné jako jméno formátu a naplnit proměnné použité v definici formátu. Každý vzor ve formátu je při povádění příkazu write nahrazen obsahem odpovídající proměnné.

Při zápisu na standardní výstup pojmenujte formát STDOUT.

Znaky použité ve vzoru

Vzory proměnných začínají znakem @. Znaky za znakem @ určují druh dat. Počet znaků včetně znaku @ určuje délku dat.

Formát Význam
@<<< vlevo zarovnané pole o délce 4, zprava se doplní mezery, delší řetězec se uřízne
@>>> vpravo zarovnané pole o délce 4, zleva se doplní mezery
@|||| centrované pole o délce 5
@###.## číselná položka ,která má 4 místa před tečkou dvě za tečkou
@*víceřádkové pole, jsou interpretovány znaky konec řádku uložené v řetězci v proměnné
~ (tilda)řádek obsahující tento znak se tiskne pouze pokud není prázdný

Silnější prostředky pro formátování perl neposkytuje. Chcete-li použít např. plovoucí znaménko musíte si na to napsat vlastní proceduru.

Formát začátku stránky

Implicitní délka stránky při tisku na tiskárnu je 60 řádek. Perl počítá řádky a umí na začátku každé stránky vytisknout hlavičku. Tato hlavička je definovány vlastním formátem, který má jmeno odvozené od použitého formátu pro tisk. Jméno formátu hlavičky TOP_jménoformátu.

Příklad:

format TOP_MUJFORMAT
Seznam                              strana@<
                                          $%
Proměnná $% obsahuje číslo stránky.


Další kapitola | Předchozí kapitola | Obsah