Tekstifailide parsimine Perliga

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 () {
instagram viewer

 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.