Teksta failu parsēšana ir viens no iemesliem, kāpēc Perl padara lielisku datu ieguves un skriptu veidošanas rīku.
Kā redzēsit zemāk, Perlu var izmantot, lai pamatā formatētu teksta grupu. Ja paskatās uz pirmo teksta daļu un pēc tam uz pēdējo daļu lapas apakšā, jūs varat redzēt, ka kods vidū ir tas, kas pārveido pirmo kopu otrajā.
Kā parsēt teksta failus
Piemēram, izveidosim nelielu programmu, kas atver no cilnēm atdalītu datu failu un kolonnas parsē kaut ko, ko mēs varam izmantot.
Sakiet, piemēram, ka jūsu priekšnieks jums nodod failu ar vārdu, e-pasta un tālruņu numuru sarakstu un vēlas, lai jūs lasītu failu un kaut ko dariet ar informāciju, piemēram, ievietojiet to datu bāzē vai vienkārši izdrukājiet labi formatētā formā Ziņot.
Faila slejas ir atdalītas ar rakstzīmi TAB, un tās izskatās apmēram šādi:
Lerijs [email protected] 111-1111
Cirtaini [email protected] 222–2222
Moe [email protected] 333-3333
Šeit ir pilns saraksts, ar kuru mēs strādāsim:
#! / usr / bin / perl
atvērt (FILE, 'data.txt');
kamēr () {
chomp;
($ vārds, $ e-pasts, $ tālrunis) = split ("\ t");
drukāt "Name: $ name \ n";
drukāt "E-pasts: $ email \ n";
drukāt "Tālrunis: $ tālrunis \ n";
drukāt "\ n";
}
aizvērt (FILE);
Izeja;
Piezīme: Tas izvelk kādu kodu no apmācības kā lasīt un rakstīt failus Perl.
Tas, ko tas dara vispirms, ir atvērts a failu ko sauc par data.txt (tam vajadzētu atrasties tajā pašā direktorijā kā Perl skripts). Pēc tam tas katru rindiņu rindā nolasa failu kešatmiņas mainīgajā $ _. Šajā gadījumā $ _ ir netieši un faktiski netiek izmantots kodā.
Pēc lasīšanas rindiņā jebkura atstarpe ir chomped pie tā beigām. Pēc tam sadalīšanas funkciju izmanto, lai pārtrauktu tabulas zīmes līniju. Šajā gadījumā cilni attēlo kods \ t. Pa kreisi no dalījuma zīmes redzēsit, ka es piešķiru trīs dažādu mainīgo grupu. Tie apzīmē vienu katrai rindas kolonnai.
Visbeidzot, katrs mainīgais, kas ir sadalīts no faila rindas, tiek iespiests atsevišķi, lai jūs varētu redzēt, kā piekļūt katras kolonnas datiem atsevišķi.
Skripta izvadei vajadzētu izskatīties apmēram šādi:
Vārds: Lerijs
E-pasts: [email protected]
Tālrunis: 111-1111
Vārds: cirtaini
E-pasts: [email protected]
Tālrunis: 222–2222
Vārds: Moe
E-pasts: [email protected]
Tālrunis: 333-3333
Lai gan šajā piemērā mēs tikai izdrukājam datus, būtu triviāli viegli saglabāt to pašu informāciju, kas parsēta no TSV vai CSV faila, pilnvērtīgā datu bāzē.