codicefacile

Programmazione per TUTTI…

Archivio per la categoria “Perl”

Guida Perl

Consiglio quest’ottima guida per iniziare un’approccio al Perl davvero ben fatta:

Guida Perl

Annunci

Perl – Lettura dei File

Qui di seguito un programma perl elementare che fa le stesse cose del comando UNIX cat su di un particolare file. Come già osservato in precedenza perchè tutto funzioni bene la prima riga deve corrispondere alla configurazione del sistema su cui si sta operando; su molti sistemi ad esempio l’interprete perl non si trova in /usr/local/bin/, ma invece in /usr/bin.

 #!/usr/local/bin/perl
#
# Programma per aprire il file pippo.txt, leggerlo,
# stamparlo a schermo e infine chiuderlo.

# Nome del file da leggere
$file = ‘pippo.txt’;
# Apre il file
open(INFO, $file);
# Legge tutto in un array
@righe = <INFO>;
# Chiude il file
close(INFO);
# Visualizza l’array
print @righe;

La funzione open apre un file in lettura. Il primo argomento è l’identificatore di file che permetterà in seguito di riferirsi al file aperto. Il secondo argomento è invece il nome del file da aprire. Se il nome viene dato racchiuso tra virgolette singole, allora esso viene usato in modo letterale, senza che venga fatta l’espansione da parte della shell. Ad esempio l’espressione ‘~/note/CoseDaFare.txt’ non verrebbe interpretata correttamente. Se si desidera l’interpretazione da parte della shell usare invece le parentesi angolate in questo modo: <~/note/CoseDaFare.txt>.

La funzione close dice al Perl che non ci serve più l’accesso a quel file.

Ci sono alcune cose utili da aggiungere a proposito della gestione dei file. Prima di tutto la funzione open può anche specificare un file da usare per salvare o appendere i dati in uscita, oltre che per leggere dati in ingresso:

 # Apre in lettura
open(INFO, $file);
# Apre in scrittura
open(INFO, ">$file");
# Apre per appendere l’uscita
open(INFO, ">>$file");
# Altro modo per aprire in lettura
open(INFO, "<$file");

In secondo luogo, se si vuole scrivere qualcosa su di un file già aperto in scrittura, allora si può usare il comando print con un argomento addizionale. Ad esempio per scrivere una stringa sul file con l’identificatore INFO usare

print INFO "Scrivo questa riga nel file.\n";
A questo punto osserviamo che in modo simile si possono aprire anche lo standard input (generalmente associato con la tastiera) e lo standard output (generalmente lo schermo):

 # Apre lo standard input
open(INFO_IN, ‘-‘);
# Apre lo standard output
open(INFO_OUT, ‘>-‘);

Nel programma visto sopra le informazioni sono lette da un file. L’identificatore di tale file è INFO e si legge da esso usando le parentesi angolate. Così l’istruzione

@lines = <INFO>;
legge il file associato a INFO nell’array &righe. Notare che con questa tecnica il file viene letto tutto in una volta. Questo succede perchè la lettura avviene nel contesto di una varabile array. Se invece &righe venisse sostituito dalla variabile scalare $riga, allora solo una riga verrebbe letta. In entrambi i casi ogni riga viene memorizzata completa con il suo carattere di newline alla fine.

Navigazione articolo

%d blogger hanno fatto clic su Mi Piace per questo: