Perl er utviklet for å lese og manipulere tekst data . Det er lett å manipulere sine tre grunnleggende datastrukturer ( skalar , listen og hash ) fordi Perl tolk kan skrive det basert på kontekstuelle data . Den hyppigst manipulert data format i Perl er komma - separerte verdier . Instruksjoner
en
Åpne datafil , hvis du ikke leser data fra STDIN eller DATA . Bruk en filehandle som er lett identifiseres : "open CSVFILE , " test.csv ","
2
Les dataene. Med små filer , kan du lese alle linjene samtidig. For store filer , bør du være lese en linje av gangen og behandle den før du leser neste linje . Her er vinkelbeslag "magic syntaks " for å lese alle linjer brukes til å lese alle linjene i matrisen @ linjer : "@ lines = ; "
3
Strip de linjeskift den slutten av hver linje, ved hjelp av kart -funksjonen . De linjeskift er ikke nødvendig , da de er meningsløse når alle linjene leses i. kartfunksjon vil kalle blokken passerte som første argument for hvert element i listen: "kart ( { chomp } @ linjer) ; "
4
Split linjene . De komma - separerte verdier må splittes i arrays , som kan oppnås ved å bruke splitt og kartfunksjon . Linjene vil bli gjenforent på en lignende måte når dataene vil bli skrevet ut igjen. " @ linjer = map ( { [ split /, /]} @ linjer) ; " .
5
manipulere dataene , nå som alle data i minnet er i et lett tilgjengelig format
6
Loop over dem med foreach søkeordet. Foreach søkeord kjører en blokk for hvert element i en matrise, tilordne til hver matrise element en referanse til standard variabel. Dette eksemplet forutsetter det andre feltet ( datatabellindekser av 1 ) inneholder en numerisk verdi , og legger 20 til det. Eventuelle andre manipulasjoner , inkludert matematikk og streng manipulasjoner , kan utføres på en lignende måte : " foreach ( @ linjer) { $ _ - > [ 1 ] + = 20 ;} "
7
Ruta data før det kan skrives tilbake til en csv -fil . Feltene må være gjenforent med komma : " @ linjer = map ( { delta ", " , @ { $ _ }} @ linjer) ; "
8
Skriv ut dataene. Igjen , vil du løkken over @ linjer , men denne gangen bare skrive ut hver linje . Her linjene skrives til stdout , men du kan like gjerne åpne en annen fil og print på det : ;
< " { \\ n" foreach ( @ linjer) print $ _ . "} " br >