Ok, come da tempo promesso iniziamo adesso un nuovo capitolo del
nostro corso di Perl. Se siete dei programmatori, sapete già che
la lettura/scrittura di files è essenziale per qualunque programma.
Se non lo siete, fidatevi di me :-)
Tutti i linguaggi hanno qualche istruzione dedicata ai files. In
genere sono poche e complicate. Per il Perl, il caro Larry Wall
ci ha dato dentro, e in una singola istruzione ha raccolto un numero
di funzioni più alto di quello che riesco a contare... ma vediamo
un esempio basilare:
open ( TEMP, "pippo");
$testo = <TEMP>;
close (TEMP);
Ad occhio e croce, tralasciando i dettagli, dovreste essere in grado
di indovinare cosa sta succedendo: la prima riga apre un
file chiamato pippo, riferendosi ad esso con il nome
TEMP. Questo file viene letto in qualche modo,
con il risultato che va nella variabile $testo. Infine, il
file viene chiuso.
La sequenza delle operazioni è sempre questa, lunica cosa
che varia è il numero di letture e/o scritture che vengono eseguite
nel mezzo.
Listruzione open
Open (che in italiano si traduce con aprire)
serve appunto ad aprire un file. Il significato di aprire,
in informatica, è di rendere disponibile al programma una risorsa.
Una parola più adatta sarebbe accedere, ma non la usa
nessuno (in genere i programmatori non sono puristi della lingua...)
Una volta aperto un file, possiamo fare principalmente due cose:
leggere il suo contenuto, e scriverci un nuovo contenuto. Alla fine,
il file deve essere chiuso.
In genere, un file è aperto in sola lettura oppure in sola
scrittura, cioè per una sola delle operazioni alla volta. E
possibile aprirlo per entrambe, ma per adesso non facciamo il passo
più lungo della gamba.
La sintassi per aprire un file in lettura è:
open ( FILEHANDLE, <nomefile);
nomefile è il nome del file che vogliamo aprire, e FILEHANDLE
è un nome fittizio, generalmente scritto a caratteri tutti maiuscoli.
Potete vederlo come una variabile speciale, che contiene un riferimento
al file. A parte open, le istruzioni che lavorano coi files
si limitano ad usare filehandles.
Notate il carattere < davanti al nome del file. Piuttosto
che un minore, va visto come una freccia che punta dal
nome del file verso il nostro programma. E la direzione
in cui le informazioni viaggiano, e adesso indica che il file viene
letto. Per aprire un file in scrittura, occorre rovesciare la freccia:
open ( FILEHANDLE, ">nomefile");
Attenzione a fare prove a caso: se aprite in questo modo un file
che esiste già, il suo contenuto viene cancellato! Quindi andateci
piano :-)
La freccia è in effetti opzionale, e infatti nel nostro primo esempio
non lavevamo scritta: in sua assenza, il Perl assume che il
file venga aperto in lettura:
open ( FILEHANDLE, "nomefile");
è come aver scritto <nomefile. In questo modo, tra
laltro, non si rischiano danni se si dimentica la freccia
per sbaglio!
Per rendere più chiara l'istruzione, si possono aggiungere spazi
in cima e in fondo al nome del file a volontà:
open ( FILEHANDLE, "<
nomefile ");
E inoltre, essendo il nome del file una stringa come le altre, si
possono interpolare variabili come al solito:
open ( FILEHANDLE, "<
$nome");
open ( FILEHANDLE, ">${num}pippo${num2}" . $a . $b
. " ab$c");
open ( FILEHANDLE, $pippo);
Lultimo esempio, mancando di frecce, apre in lettura il file
il cui nome è contenuto nella variabile $pippo. Si può anche
pensare di scrivere questo:
$pippo = ">pippo";
open ( FILEHANDLE, $pippo);
che apre il file pippo in scrittura, perché il
primo carattere della stringa è >. Questo codice
è sintatticamente corretto, ma da evitare. Ci sono troppe possibilità
di fare sbagli, perché ad un'occhiata veloce sembra che quellopen
stia aprendo un file in lettura, non in scrittura!
Bene, adesso abbiamo un paio di nozioni su come aprire un file.
Nella prossima lezione vedremo come leggerlo o scriverlo, e poi
continueremo con qualche altro esempio dell'istruzione open, che
ha ancora molto da mostrarci.
Torna all'indice Generale del corso di Corso di Perl di Software Planet