Abbiamo già visto l'istruzione print, che ci permette di stampare
l'output dei nostri script. Questa istruzione è piuttosto potente e permette di
formattare l'output in vari modi utilizzando una serie di caratteri di controllo
che vedremo in maggiore dettaglio nelle prossime pagine.
Le variabili scalari in Perl sono precedute da un simbolo
``$'', in modo da distinguerle da liste ed array. Il Perl non distingue tra variabili numeriche e stringhe: su entrambe è consentito fare le stesse
operazioni, lasciando all'interprete il compito di assegnare un valore numerico
o stringa al contenuto delle variabili a seconda del contesto in cui queste sono
usate.
Il seguente script è una banale evoluzione dello script precedente:
#!/usr/local/bin/perl
# semplice script di esempio
$nome = "Marco";
print "Buongiorno $nome\n";
Il cancelletto è utilizzato in Perl per introdurre delle linee di commento;
quindi dopo un simbolo ``#'' potete inserire ogni tipo di commento che
possa aiutare voi o qualcun altro a comprendere anche a distanza di tempo il
funzionamento dello script. L'interprete Perl eviterà di analizzare e di
tradurre ogni parola che segue il simbolo ``#'' fino alla fine della
riga.
L'istruzione complementare a quella di stampa è quella di lettura, che
consente di assegnare alle variabili dello script dei valori digitati
dall'operatore o letti da un file. Il seguente programmino è una ulteriore
evoluzione dell'esempio precedente e fa uso dell'istruzione di lettura:
#!/usr/local/bin/perl
# un altro esempio elementare
print "Come ti chiami? ";
$nome = <STDIN>;
print "Buongiorno $nome\n";
Lanciando in esecuzione quest'ultima versione del programma
salve.pl, il sistema ci chiede di inserire il nostro nome mediante la
tastiera del terminale, e quando avremo battuto RETURN per segnalare la fine del
nostro inserimento, visualizzerà il consueto messaggio di buongiorno. Il simbolo
<STDIN> è infatti l'handler del file di input standard, un file sempre aperto in lettura durante tutta l'esecuzione del programma e che
rappresenta generalmente la tastiera del terminale dell'utente. Con l'istruzione
$nome=<STDIN> si assegna alla variabile $nome la linea di input proveniente dal canale di input standard, compreso il carattere di
``fine riga''.
$ salve.pl
Come ti chiami?
Marco
Buongiorno Marco
$
È possibile redirigere il contenuto di un file attraverso il canale dello
standard input utilizzando le funzionalità di redirezione e di piping
messi a disposizione dalla shell di comandi del sistema operativo. Ad esempio
supponiamo di aver creato un file di testo (chiamato nome) con il
nostro editor, in cui abbiamo inserito soltanto una parola, ad esempio
``Marco''. Allora potremo redirigere il contenuto di questo file verso il canale
di input standard del nostro programma, nel seguente modo:
$ salve.pl < nome
Come ti chiami?
Buongiorno Marco
$
Allo stesso modo in cui redirigiamo l'input standard, possiamo anche
redirigere verso un file il canale di output standard, in modo da memorizzare su
file ogni messaggio che il nostro programma avrebbe altrimenti visualizzato
sullo schermo del terminale. Il seguente comando non produce alcun output:
$ salve.pl < nome > output
$
Infatti ciò che il programma doveva leggere in input gli è stato passato
attraverso il file nome, mentre l'output è stato scritto nel file
output.