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 |