Tekstifailide parsimine on üks põhjusi, miks Perl teeb suurepärase andmete kaevandamise ja skriptimise tööriista.
Nagu näete allpool, saab Perli kasutada tekstirühma põhimõtteliseks vormindamiseks. Kui vaatate alla esimest tekstiosa ja siis viimast osa lehe allosas, näete, et keskel olev kood muudab esimese komplekti teiseks.
Kuidas sõeluda tekstifaile
Näitena ehitame väikese programmi, mis avab vahekaartidest eraldatud andmefaili ja parsib veerud millekski, mida saame kasutada.
Öelge näiteks, et teie ülemus annab teile failinime koos nimede, meilide ja telefoninumbritega ning soovib, et te loeksite faili ja teha selle teabega midagi, näiteks panna see andmebaasi või printida see kenasti vormindatud kujul välja aruanne.
Faili veerud on eraldatud märkega TAB ja näeksid välja umbes sellised:
Larry larry@example.com 111-1111
Curly curly@example.com 222-2222
Moe moe@example.com 333-3333
Siin on täielik loetelu, millega me koostööd teeme:
#! / usr / bin / perl
avatud (Fail, 'data.txt');
samas () {
chomp;
($ nimi, $ e-post, $ telefon) = split ("\ t");
prindi "Nimi: $ nimi \ n";
printida "E-post: $ email \ n";
printida "Telefon: $ telefon \ n";
prindi "\ n";
}
sulge (fail);
väljumine;
Märge: See tõmbab juhendajalt mõne koodi kuidas Perlis faile lugeda ja kirjutada.
Mida see kõigepealt teeb, on avatud a faili mida nimetatakse data.txt (see peaks asuma samas kataloogis kui Perli skript). Seejärel loeb see faili ridahaaval otsetee muutujasse $ _. Sel juhul on $ _ kaudsed ja seda koodis tegelikult ei kasutata.
Pärast rea lugemist on tühimärk lõi selle otsast ära. Seejärel kasutatakse jaotamise funktsiooni tabeli tähemärgi rea murdmiseks. Sel juhul tähistab vahekaart koodi \ t. Jaotuse märgist vasakul näete, et ma jagan kolmest erinevast muutujast koosneva rühma. Need tähistavad ühte rea iga veeru kohta.
Lõpuks trükitakse iga muutuja, mis on faili real eraldatud, eraldi, nii et näete, kuidas pääseda juurde iga veeru andmetele eraldi.
Skripti väljund peaks välja nägema umbes selline:
Nimi: Larry
E-post: larry@example.com
Telefon: 111-1111
Nimi: lokkis
E-post: lokkis@näide.com
Telefon: 222-2222
Nimi: Moe
E-post: moe@example.com
Telefon: 333-3333
Ehkki selles näites trükime andmed lihtsalt välja, oleks triviaalselt lihtne salvestada sama teave, mis on parsitud TSV- või CSV-failist, täieõiguslikku andmebaasi.