Parsning av textfiler är en av anledningarna till att Perl är ett bra verktyg för data mining och scripting.
Som ni ser nedan kan Perl användas för att i princip formatera en grupp text. Om du tittar ner på den första biten med text och sedan den sista delen längst ner på sidan kan du se att koden i mitten är det som förvandlar den första uppsättningen till den andra.
Hur man analyserar textfiler
Som ett exempel, låt oss bygga ett litet program som öppnar en flikavskiljd datafil, och parsar kolumnerna till något vi kan använda.
Säg som exempel att din chef ger dig en fil med en lista med namn, e-postmeddelanden och telefonnummer och vill att du ska läsa filen och gör något med informationen, som att lägga den i en databas eller bara skriva ut den i ett snyggt formaterat Rapportera.
Filens kolumner är separerade med TAB-tecknet och ser ut så här:
Här är den fullständiga listan vi kommer att arbeta med:
#! / Usr / bin / perl
öppen (FIL, 'data.txt');
medan () {
chomp;
($ namn, $ e-post, $ telefon) = split ("\ t");
tryck "Namn: $ name \ n";
tryck "E-post: $ e-post \ n";
tryck "Telefon: $ telefon \ n";
tryck "\ n";
}
stäng (FIL);
utgång;
Notera: Detta drar viss kod från handledning på hur man läser och skriver filer i Perl.
Vad det gör först är att öppna en fil kallas data.txt (som borde ligga i samma katalog som Perl-skriptet). Därefter läser den filen in i catchall-variabeln $ _ rad för rad. I detta fall är $ _ underförstådd och används inte i koden.
Efter att ha läst i en rad är det något vitrum chomped från slutet av det. Sedan används splitfunktionen för att bryta linjen på flikens karaktär. I det här fallet representeras fliken av koden \ t. Till vänster om splitets tecken ser du att jag tilldelar en grupp med tre olika variabler. Dessa representerar en för varje kolumn på raden.
Slutligen skrivs varje variabel som har delats upp från filens rad separat så att du kan se hur du får åtkomst till varje kolumns data individuellt.
Utgången från skriptet ska se ut så här:
Namn: Larry
E-post: [email protected]
Telefon: 111-1111
Namn: Lockigt
E-post: [email protected]
Telefon: 222-2222
Namn: Moe
E-post: [email protected]
Telefon: 333-3333
Även om vi i det här exemplet bara skriver ut data, skulle det vara trivialt enkelt att lagra samma information som har analyserats från en TSV- eller CSV-fil, i en fullständig databas.