Livello di difficoltà: |
|
Il Perl, acronimo di Pratical extraction and report language, è diventato tanto popolare in Rete perché è il linguaggio più utilizzato per la creazine di programmi Cgi residenti su server Http. Può essere sfruttato sia su Web servers Apache che Iis.
|
|
Input/Output su file
Guida a Perl
I canali standard di comunicazione di ogni programma sono tre e ad ognuno di
questi è associato un handler:
<STDIN> |
standard input |
<STDOUT> |
standard output |
<STDERR> |
standard error | Tab. 1: I file
handler standard
Così come ogni input avviene di default attraverso <STDIN>,
così anche l'output viene emesso attraverso <STDOUT>; in alcuni
casi è opportuno dichiarare esplicitamente il canale di output:
print STDOUT "Buongiorno $nome\n";
|
Il canale <STDERR> è simile a <STDIN>, ma viene
solitamente utilizzato per visualizzare i messaggi di errore in modo tale che,
se anche lo standard output è rediretto attraverso un file, il messaggio di
errore viene visualizzato ugualmente sul terminale dell'utente o sulla console
del sistema.
Oltre a questi file handler standard che non è necessario aprire o chiudere
esplicitamente, è possibile aprire anche un canale di comunicazione verso un
normale file di testo sull'unità di memoria di massa.
Prima di poterlo utilizzare, un file deve essere aperto dichiarandone anche
l'uso che se ne intende fare; il file infatti può essere aperto in modalità
differenti:
read: |
open(handle, "<nome") |
si possono effettuare solo operazioni di lettura dal
file specificato; |
write: |
open(handle, ">nome") |
si possono effettuare soltanto operazioni di scrittura
sul file; se il file già esiste verrà cancellato e ne verrà creato uno
nuovo; |
append: |
open(handle, ">>nome") |
si possono effettuare solo operazioni di scrittura
aggiungendo dati in coda al file; se il file già esiste in questo caso non
verrà cancellato, se non esiste verrà
creato. | Tab. 2: Modalità di
apertura di un file
Il seguente script legge tutte le linee di un file di testo e le visualizza
sullo schermo del terminale. Viene fatto uso della struttura di controllo
while che ancora non è stata descritta; per il momento basti sapere che
questa struttura consente di ripetere un certo blocco di istruzioni fintanto che
una certa condizione non risulta verificata.
#!/usr/local/bin/perl
# simpcat.pl: versione semplificata di 'cat'
print STDERR "nome del file: ";
$filename = <STDIN>;
open(FILE, "< $filename");
while (!eof(FILE)) {
$riga = <FILE>;
print "$riga";
}
Al solo scopo di cominciare ad introdurre alcuni dei comandi che diventeranno
di uso comune nelle prossime pagine, possiamo riscrivere in maniera equivalente
lo script precedente come segue:
#!/usr/local/bin/perl
# simpcat.pl: versione semplificata di 'cat'
$filename = $ARGV[0];
open(FILE, "< $filename") || die "Errore!\n\n";
while ($riga = <FILE>) {
print "$riga";
}
Nel primo esempio il programma chiede di inserire il nome del file da
visualizzare, mentre nel secondo caso si aspetta che il nome gli venga passato
come parametro. Inoltre, nella seconda versione, se il file risulta impossibile
da aprire lo script visualizza il messaggio ``Errore!'' e l'esecuzione
ha termine.
Già da queste due versioni equivalenti di un esempio così elementare si
intravede la grande libertà lasciata dal Perl al programmatore: non c'è mai un
solo modo per compiere una certa operazione in Perl.
|