Formatai

 

PERL informacijos išvedimui galima naudoti ataskaitas. Tai atlieka formatai, kurių pagalba galima formatuoti ir tvarkingai išdėstyti laukus, nustatyti įrašų skaičių lape ir t.t. Formatai leidžia sukurti ataskaitos antraštę, į kurią galima įrašyti dokumento ar laukų pavadinimus bei apibrėžti pačius laukus. Naudojant formatus pirmiausiai nustatomas formatas ir kintamieji, kurie bus naudojami, toliau kintamieji inicializuojami ir write funkcijos pagalba išvedami į ekraną, spausdintuvą ar failą. Taigi formatus galima laikyti kaip funkcijos write informacijos išvedimui instrukcijas.

Formatą visuomet reikia apibrėžti prieš jį naudojant. Fiziškai tai gali būti padaryta bet kurioje programos vietoje, nors paprastai formatai aprašomi programos pradžioje. Formatas pradedamas raktiniu žodžiu format ir užbaigiamas "." Bendroji sintaksė:

format [PAVADINIMAS] =
EILU
ČIŲ_ŠABLONAI

.

PAVADINIMAS -  tai formato identifikatorius, paprastai sutampantis su failo deskriptoriaus pavadinimu, į kurį bus išvedama ataskaita.
EILUČIŲ_ŠABLONAI - susideda iš eilučių, aprašančių, kaip atrodys tekstas bei kur bus įterpiamos ir kaip išvedamos kintamųjų reikšmės.

Eilučių šablono pavyzdys:

Hello, my name is @<<<<<<<<<< and I'm @<< years old.
$name, $age

Taigi kaip matome, po simbolio @ (taip pat ir ^) eina simboliai aprašantys kintamųjų reikšmių išvedimo formatus. Formatavime naudoji simboliai bei jų reikšmės, pateiktos lentelėje.

Simbolis Reikšmė
> Apibrėžia simbolinį lauką ir parodo, kiek vietos užims kintamojo reikšmė.Tekstas lygiuojamas pagal dešinįjį kraštą
< Apibrėžia simbolinį lauką ir parodo, kiek vietos užims kintamojo reikšmė.Tekstas lygiuojamas pagal kairįjį kraštą
| Apibrėžia simbolinį lauką ir parodo, kiek vietos užims kintamojo reikšmė.Tekstas centruojamas.
# Apibrėžia skaitmeninį lauką. Išvedama reikšmė turi būti skaičius.
. Nurodo taško vietą dešimtainiame skaičiuje (###.##)
~ Išvedant pakeičiama į tarpą. Nurodo, kad ^ aprašytų eilučių nereikia išvedinėti, jei  eilutė yra tuščia.
~ ~ Išvedant pakeičiama į tarpą; nurodo, kad eilutę reikia išvedinėti tol, kol visos reikšmės taps tuščios

Pavyzdys

format ADRESAS =
===============================
| @<<<<<<<<<<<<<<<<<<<<<<<<<< |
$vardas
| @<<<<<<<<<<<<<<<<<<<<<<<<<< |
$adresas
| @<<<<<<<<<<<<<<<<,  @#####  |
$miestas, $indeksas
===============================
.

open(ADRESAS,">adresai.txt") || die "Negalima sukurti failo\n";
open(FILE,"file.txt")  || die "Negalima atidaryti adresu failo\n";
while (<FILE>) {
    chomp;
    ($vardas,$adresas,$miestas,$indeksas) = split(/:/);
    write (ADRESAS);     
}

Šiame pavyzdyje nuskaitoma informacija iš failo file.txt, turinčio tokią struktūrą:

Fred Flintstone: Saulėtekio 11: Vilnius: 2040
Petras Petraitis: Studentų 39: Vilnius: 2041

ir į failą adresai.txt išvedamas taip atrodantis tekstas:

===============================
| Fred Flintstone             |
| Saulėtekio 11               |
| Vilnius        ,  2040      |
===============================
===============================
| Petras Petraitis            |
| Studentų 39                 |
| Vilnius        ,  2041      |
===============================
Jeigu norima, kad kiekvieno ataskaitos lapo viršuje būtų išvedama antraštė, reikia sukurti formatą, turintį pavadinime sufiksą  _TOP . Pavyzdžiui:
format STDOUT_TOP =
Puslapis nr. $%
Autorius        Pavadinimas      Metai     Kaina
===================================================
.

Specialūs kintamieji

Su formatais susiję keletas specialių PERL kintamųjų. Juos galima naudoti išvedant statistinę informaciją (puslapio numeris ir t.t) ar kai vienoje programoje naudojami keli formatai. Žemiau pateiktas jų sąrašas:

Kintamasis Reikšmė
$% Išvedamos ataskaitos puslapio numeris
$- Likęs eilučių kiekis puslapyje
$^ Ataskaitos antraštės formato pavadinimas
$~ Esamo formato pavadinimas. Keičiant šio kintamojo reikšmę, galima keisti formatus funkcijoje write. Pvz . $~ = STDOUT_TOP
$= Lape išvedamų eilučių skaičius. Pvz. $= =24
$^L Šiam kintamajam priskiriama informacija, kuri išvedama puslapio pabaigoje

 

Į turinį