|
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
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 solo operazioni di scritture sul file, e se il
file gia' esiste verra' cancellato e ne verra' creato uno nuovo; |
| append |
open(handle,
">>nome") |
si
possono effettuare solo operazioni di scrittura aggiungengo datiin
coda al file, e se il file gia' esiste in questo caso non verra'
cancellato, mentre se non esiste verra' creato. |
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.
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.
.
Lezione
successiva => Torna
all'indice
|