Analýza textových souborů je jedním z důvodů, proč Perl vytváří skvělý nástroj pro dolování a skriptování dat.
Jak uvidíte níže, Perl lze v zásadě přeformátovat skupinu textu. Pokud se podíváte dolů na první část textu a pak na poslední část ve spodní části stránky, uvidíte, že kód uprostřed je tím, co transformuje první sadu do druhé.
Jak analyzovat textové soubory
Například vytvořme malý program, který otevře datový soubor oddělený od karty a analyzuje sloupce na něco, co můžeme použít.
Řekněme například, že vám váš šéf předá soubor se seznamem jmen, e-mailů a telefonních čísel a chce, abyste si jej přečetli soubor a udělejte něco s informacemi, například jej vložte do databáze nebo jej vytiskněte v pěkně formátovaném formátu zpráva.
Sloupce souboru jsou odděleny znakem TAB a vypadají asi takto:
Zde je kompletní seznam, se kterým budeme pracovat:
#! / usr / bin / perl
open (FILE, 'data.txt');
zatímco () {
chomp;
($ name, $ email, $ phone) = split ("\ t");
print "Jméno: $ jméno \ n";
print "Email: $ email \ n";
tisk "Telefon: $ telefon \ n";
tisk "\ n";
}
zavřít (FILE);
výstup;
Poznámka: Toto vytahuje nějaký kód z tutoriálu jak číst a zapisovat soubory v Perlu.
To, co dělá první, je otevřené soubor nazývá data.txt (který by měl být umístěn ve stejném adresáři jako skript Perl). Poté načte soubor do proměnné catchall $ _ řádek po řádku. V tomto případě je $ _ implicitní a ve skutečnosti se v kódu nepoužívá.
Po přečtení v řádku je libovolné prázdné místo chomped z jeho konce. Poté se funkce rozdělení použije k přerušení řádku na znaku karty. V tomto případě je karta reprezentována kódem \ t. Vlevo od znaménka rozdělení uvidíte, že přiřazuji skupinu tří různých proměnných. Představují jeden pro každý sloupec řádku.
Nakonec je každá proměnná, která byla rozdělena z řádku souboru, vytištěna samostatně, takže můžete vidět, jak jednotlivě přistupovat k datům každého sloupce.
Výstup skriptu by měl vypadat asi takto:
Jméno: Larry
E-mail: [email protected]
Telefon: 111-1111
Jméno: Curly
E-mail: [email protected]
Telefon: 222-2222
Jméno: Moe
E-mail: [email protected]
Telefon: 333-3333
Ačkoli v tomto příkladu právě tiskneme data, bylo by triviální snadné uložit stejné informace analyzované ze souboru TSV nebo CSV do plnohodnotné databáze.