Come manipolare i dati in Perl

January 11

Perl è progettato per la lettura e la manipolazione di dati di testo. E 'facile da manipolare le sue tre strutture dati di base (il scalari, l'elenco e gli hash) perché l'interprete Perl può digitare sulla base di dati contestuali. Il formato dei dati più comunemente manipolati in Perl è valori separati da virgole.

istruzione

1 Aprire il file di dati, se non si sta leggendo i dati da STDIN o DATA. Utilizzare un filehandle che è facilmente identificabile:
"open CSVFILE, "test.csv";"

2 Leggere i dati. Con file di piccole dimensioni, è possibile leggere tutte le linee in una sola volta. Per i file di grandi dimensioni, si dovrebbe leggere una riga alla volta e lo elabora prima di leggere la riga successiva. Qui, la parentesi angolare "sintassi magico" per la lettura di tutte le linee viene utilizzato per leggere tutte le linee nelle @linee matrice:
"@lines = ;" "@lines = ;"

3 Striscia i ritorni a capo alla fine di ogni linea, utilizzando la funzione di mappa. Le nuove linee non sono necessari, in quanto sono privi di significato una volta che tutte le linee vengono lette nella funzione mappa chiamerà il blocco passato come primo argomento per ogni elemento della lista.:
"map({chomp} @lines);"

4 Dividere le linee. I valori separati da virgole devono essere divisi in array, che possono essere raggiunti utilizzando la funzione split e mappa. Le linee saranno ricongiunti in modo simile quando i dati saranno stampati di nuovo. "@lines = map({[split /,/]} @lines);"

5 Manipolare i dati, ora che tutti i dati nella memoria in un formato facilmente accessibile.

6 Loop su di loro con la parola chiave foreach. La parola chiave foreach viene eseguito un blocco per ogni elemento di un array, assegnando a ogni elemento dell'array un riferimento alla variabile predefinita. Questo esempio presuppone secondo campo (indice di campo 1) contiene un valore numerico, e aggiunge 20 ad esso. Eventuali altre manipolazioni, tra cui matematici e su stringhe manipolazioni, possono essere eseguite in modo simile:
"foreach (@lines) {
$_->[1] += 20;
}"

7 Ricongiungersi con i dati prima che possa essere ripristinato in un file CSV. I campi hanno bisogno di essere ricongiunto con virgole:
"@lines = map({join ",",@{$_}} @lines);"

8 Stampa i dati. Anche in questo caso, si vuole un ciclo su @linee, ma questa volta stampare solo ogni riga. Qui le linee sono stampate a STDOUT, ma si potrebbe altrettanto facilmente aprire un altro file e di stampa che:
"foreach (@lines) {
print $_ . "\n";
}"

Consigli e avvertenze

  • Ricordate che la variabile predefinita $ _ non è una variabile di lista, ma è invece un riferimento a una variabile di lista. Al fine di indicizzare la matrice, è per prima cosa dereferenziare il riferimento con l'operatore ->.