Apici, stringhe ed interpolazioni

Guida a Perl
di M. Liverani

Il Perl adotta in pieno la convenzione sull'uso degli apici, già adottata da numerosi altri tool in ambiente UNIX, tanto da rendere questa convenzione uno standard per questo ambiente.

Una coppia di apici singoli ``''' (l'apostrofo) viene utilizzata per delimitare una stringa che non dovrà essere oggetto di ulteriore interpretazione da parte del Perl. Così, volendo assegnare alla variabile $nome il valore ``Pippo'' potremo usare l'espressione ``$nome = 'Pippo'''.

I doppi apici ``"'' (le virgolette) sono invece utilizzate per delimitare una stringa il cui valore dovrà essere ulteriormente sviluppato dall'interprete Perl. In gergo tecnico si dice che l'interprete effettuerà l'interpolazione del valore della stringa, ossia esploderà il valore di eventuali variabili o stringhe di controllo contenute all'interno della stringa stessa.

Consideriamo il seguente esempio:

# !/usr/local/bin/perl
# somma.pl: esempio di interpolazione
$a = 3;
$b = 4;
$c = $a+$b;
print 'con apici: $a+$b=$c\n';
print "\ncon virgolette: $a+$b=$c\n";

Eseguendo il programma I>somma.pl otterremo il seguente output:

$ somma.pl
con apici: $a+$b=$c\n
con virgolette: 3+4=7
$ _

Per rappresentare all'interno di una stringa delimitata da virgolette un carattere che in Perl ha un significato speciale, è necessario farlo precedere dal simbolo ``\'' (backslash) per evitare che l'interprete lo utilizzi attribuendogli il significato che ha nella sintassi del linguaggio. Ad esempio per visualizzare il simbolo ``$'' dovremo usare la sequenza ``$'', e lo stesso faremo per rappresentare simboli particolari come ``"'', ``%'', ``@'' ed altri ancora; il carattere ``\'' segue la medesima regola: per rappresentare il backslash sarà sufficiente ripeterne due di seguito (``\\'').

L'apice inverso ```'' (accento), presente sulle tastiere americane in alto a sinistra (codice ASCII 96), ha un significato completamente diverso rispetto agli apici ed alle virgolette. Serve infatti a racchiudere un comando che verrà eseguito aprendo un processo figlio dell'interprete Perl (tipicamente si tratta quindi di comandi della shell UNIX). L'output prodotto dal comando eseguito mediante l'apice inverso viene restituito all'interprete Perl (processo padre).

Ad esempio, sappiamo che il comando date della shell UNIX serve a visualizzare la data e l'ora corrente; volendo assegnare questo valore ad una variabile di un nostro script in Perl possiamo utilizzare la seguente espressione:

$data_odierna = `date +%d/%m/%y`;

L'output del comando date viene catturato, senza che venga visualizzato sullo standard output, e restituito come valore di ritorno della chiamata del processo stesso.

© Risorse.net (www.risorse.net)
pagina in versione stampabile:
http://www.risorse.net /perl/apici.asp?print=ok