Perl är konstruerad för att läsa och manipulera textdata . Det är lätt att manipulera sina tre grundläggande datastrukturer ( skalären , listan och hash ) eftersom Perl tolk kan skriva det utifrån kontextuella uppgifter . Den vanligaste manipulerade dataformat i Perl är kommaseparerade värden . Instruktioner
1
Öppna datafilen , om du inte läser data från STDIN eller DATA . Använd en filehandle som lätt identifieras : " open CSVFILE , " test.csv " , " köpa 2
Läs datan . Med små filer , kan du läsa alla linjer på en gång . För stora filer , bör du vara läsa en rad i taget och bearbeta den innan du läser nästa rad . Här är vinkeljärnet " magic syntax " för att läsa alla linjer som används för att läsa alla rader i arrayen @ rader : "@ lines = , " Addera 3
Strip radbrytningar i slutet av varje rad , med kartfunktion . De radbrytningar inte behövs , eftersom de är meningslösa när alla rader läses i. kartfunktion kallar blocket gått som det första argumentet för varje element i listan : " map ( { chomp } @ linjer ) , "
4
Split raderna . De kommaseparerade värden måste delas upp i matriser , som kan uppnås med hjälp av split och kartfunktion . Linjerna kommer att återförenas på ett liknande sätt när data skrivs ut igen . " @ rader = map ( { [ split /, /] } @ linjer ) , " .
5
manipulera data , nu när alla data i minnet är i ett lättillgängligt format
6
Loop över dem med foreach nyckelordet . Den foreach nyckelordet kör ett block för varje element i en array och tilldela varje element i arrayen en referens till standard variabeln . Detta exempel förutsätter det andra fältet ( array index 1 ) innehåller ett numeriskt värde , och adderar 20 till det . Alla andra manipulationer , inklusive matematik och manipulationer sträng , kan utföras på ett liknande sätt : " foreach ( @ rader ) { $ _ - > [ 1 ] + = 20 ; } "
7
Återvänd till data innan den kan skrivas tillbaka till en CSV-fil . Fälten måste återförenas med kommatecken : " @ rader = map ( { gå " , " @ { $ _ }} @ linjer ) , "
8
ut uppgifterna . Återigen kommer du slinga över @ linjer , men den här gången bara skriva ut varje rad . Här raderna skrivs till stdout , men du kan lika gärna öppna en annan fil och skriva ut på att : ;
< " { \\ n " foreach ( @ rader ) print $ _ . " } " br >