Perl/Variabili scalari: differenze tra le versioni
Contenuto cancellato Contenuto aggiunto
Riga 117:
===La stringa===
La stringa è una fila di caratteri che può essere anche vuota.
Quindi una fila di caratteri (qualsiasi) è una stringa.
====La stringa "pura"====
Con questa definizione intendo una sequenza di caratteri che vengono assegnati o usati "così come sono".
Il carattere che distingue una stringa "pura" dal contesto di programmazione è il ->'<-.
ESEMPI:
<source lang="perl">
# ESEMPIO 1
$a =
$
$
$
$
</source>
====La stringa "interpolata"====
La stringa interpolata consente la sostituzione di alcune entità indicate nella stringa con il loro valore.
Il carattere che distingue una stringa "interpolata" dal contesto di programmazione è il ->"<-.
Vediamo gli esempi precedenti con le "" al posto di ''.
<source lang="perl">
# ESEMPIO 1
$a =
$
$a = "abcd "; # in $a c'è una stringa di cinque caratteri (abcd e uno spazio) uguale all'esempio precedente.
$
$
</source>
Per il gruppo di stringhe dell'esempio 1 scriverle con "" o con '' è esattamente la stessa cosa : il valore finale sarà lo stesso.
Ovviamente essendo il carattere ->"<- il carattere che indica inizio e la fine non si ha problemi con il carattere ->'<-
<source lang="perl">
$a = "questa e' una stringa di caratteri";
</source>
senza problemi.
Come nel caso precedente se dovessimo scrivere il carattere ->"<- come carattere all'interno della stringa, occorrerà farlo precedere dal carattere ->\<- :
<source lang="perl">
$a = "\"virgolettato\""; # a ora ha il valore "virgolettato"
</source>
Vediamo ora le caratteristiche di usare il simbolo ->"<- al posto di ->'<-
<source lang="perl">
#ESEMPIO 2
$a = "quest'estate farà caldo"; # in $a c'è una stringa 22 caratteri (quest'estate farà caldo).
$b = "$a"; # in $b c'è una stringa 22 caratteri (quest'estate farà caldo) dato dalla sostituzione del valore di $a.
$a = "$a"; # in $a c'è il valore di $a cioè lo stesso valore di prima !.
</source>
Quindi con il delimitatore ->"<- è possibile usare il valore delle variabili al posto del nome della variabile stessa.
====I caratteri speciali====
Si è detto che il carattere ->'<- può individuare l'inizio e la fine di una stringa.
Si è detto che anche il carattere ->"<- può individuare l'inizio e la fine di una stringa.
Ma se all'intero di una stringa delimitata da ->'<- ci fosse il carattere ' come si potrebbe scrivere il codice seguente:
<source lang="perl">
$a = 'questa e' una stringa'; # stringa di 21 caratteri ERRATA SINTASSI.
</source>
oppure se all'intero di una stringa delimitata da ->"<- ci fosse il carattere ":
<source lang="perl">
$a = "questa e' una "stringa""; # stringa di 23 caratteri ERRATA SINTASSI.
</source>
Per evitare limitazioni per poter scrivere il carattere ->'<- all'interno di una stringa "pura" occorre anticiparlo dal carattere ->\<- che fa in modo di dire all'interprete che il carattere che segue (in questo caso il ') è da considerarsi in modo particolare.
Vediamo ora come si deve scrivere la riga precedente:
<source lang="perl">
$a = 'questa e\' una stringa'; # in $a c'è una stringa di 21 caratteri GIUSTA SINTASSI.
</source>
quindi il successivo esempio occorre scriverlo:
<source lang="perl">
$a = "questa e' una \"stringa\""; # stringa di 23 caratteri GIUSTA SINTASSI.
</source>
I caratteri speciali sono delle combinazioni di caratteri semplici che "servono a informare" che si vuole fare un "azione" particolare.
Da prestare attenzione che:
# nel caso della stringa pura il solo carattere speciale è il \'
Le stringhe possono contenere caratteri speciali , alcuni di questi sono:
Line 214 ⟶ 251:
Vediamo qualche esempio:
Se si volesse scrivere la frase : "pippo" corre nel prato
<source lang="perl">
$b = 'pippo';
$c = 'corre nel prato';
$d = '"'.$b.'"'." ".$c." contento"; # contiene : "pippo" corre nel prato contento
$d = " \"$b\" $c contento"; # contiene : "pippo" corre nel prato contento
# (un po' meglio)
</source>
Line 228 ⟶ 265:
<source lang="perl">
$d = " \U$b\E $c contento"; # verrà mostrato come : PIPPO corre nel prato contento
</source>
'''ATTENZIONE''' i simboli ' e " sono operatori ( e non solo convenzioni di sintassi !)
Per una migliore comprensione del testo è sono stati introdotti al posto di ' e " , rispettivamente q/.../ per ' e qq/.../ per "
quindi avremmo potuto scrivere anche :
<source lang="perl">
$a = q//; # stringa vuota
$a = qq//; # stringa vuota
$b = q/pippo/; # stringa
$c = q/corre nel prato/; # altra stringa
$d = qq/$b $c contento/; # contiene : pippo corre nel prato contento
$e = q/$b $c contento/; # contiene : $b $c contento
</source>
Inoltre è possibile sostituire al carattere / con i caratteri {,(,% per migliorare la leggibilità : per esempio se dovessi scrivere 2006/12/22 con qq/ dovrei distinguere fra / usato come simbolo di separazione della data e / usato come termine di qq/.
Per fare questo è possibile cambiare simbolo (oppure usare il carattere speciale \/ vedi dopo).
Quindi potremmo scrivere:
<source lang="perl">
$f = "2006/12/22";
$f = qq(2006/12/22);
$f = qq{2006/12/22};
</source>
====Operazioni con le stringhe====
=====Concatenare più stringhe=====
Con il carattere . è possibile concatenare più stringhe per esempio:
<source lang="perl">
$d = $b . " " . $c . " contento"; # contiene : "pippo corre nel prato contento"
</source>
=====istruzione "complessa" con le stringhe=====
<source lang="perl">
$d = q/$b=/ . qq/$b/ . "\n"; # contiene "$b=pippo" e un ritorno a capo
</source>
ma forse è meglio scriverla:
<source lang="perl">
$d = '$b=' . "$b\n"; # contiene "$b=pippo" e un ritorno a capo
</source>
oppure anche:
<source lang="perl">
$d = '$b=' . $b. "\n"; # contiene "$b=pippo" e un ritorno a capo
</source>
|