Perl/Variabili scalari: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
Corretto: "una azione"
m Update syntaxhighlight tags - remove use of deprecated <source> tags
Riga 25:
Inoltre essendo un linguaggio "case sensitive" le lettere maiuscole e le lettere minuscole sono differenti.
 
<sourcesyntaxhighlight lang="perl">
$a; # è la variabile a
$A; # è la variabile A diversa da a
</syntaxhighlight>
</source>
 
'''NOTA:''' il nome di una variabile non può iniziare con numeri!
Riga 54:
Vediamo alcuni esempi:
 
<sourcesyntaxhighlight lang="perl">
$primo_numero = 5; # decimale
Riga 64:
$primo_numero = 0x5; # esadecimale (cifre da '''0''' a '''9''' e lettere da '''a''' a '''f''' )
</syntaxhighlight>
</source>
 
sono tutti modi di far valere la variabile primo_numero il numero intero 5.
Riga 78:
Vediamo insieme alcune operazioni:
 
<sourcesyntaxhighlight lang="perl">
$p = 7; # assegnamento
$s = 9;
Riga 89:
$r = $p % $s; # modulo r vale ora 7
$r = $p ** $s; # elevamento r vale ora 40353607 ( 7 elevato alla 9 )
</syntaxhighlight>
</source>
 
'''NOTA''' per operazioni più complesse ci sono delle apposite funzioni
Riga 103:
vediamo un esempio:
 
<sourcesyntaxhighlight lang="perl">
$p = 7; # assegnamento
$q = 0;
Riga 114:
$r = $p--; # post decremento ora $r = 7 , $p = 6
$q = --$p; # pre decremento ora $q = 5 , $p = 5
</syntaxhighlight>
</source>
 
'''NOTA''' se p e s fossero in virgola mobile il loro valore viene incrementato/decrementato di uno senza alterare la parte decimale. es <sourcesyntaxhighlight lang="perl">$a = 1.2; $a++; # ora $a vale 2.2</sourcesyntaxhighlight>
 
===La stringa===
Riga 127:
 
ESEMPI:
<sourcesyntaxhighlight lang="perl">
# ESEMPIO 1
$a = '1234'; # in $a c'è una stringa di quattro caratteri (1234).
Riga 134:
$a = 'questa è una stringa di caratteri'; # in $a c'è una stringa di 33 caratteri .
$a = '' # in $a c'è una stringa vuota !
</syntaxhighlight>
</source>
 
 
Riga 143:
Vediamo gli esempi precedenti con le "" al posto di ''.
 
<sourcesyntaxhighlight lang="perl">
# ESEMPIO 1
$a = "1234"; # in $a c'è una stringa di quattro caratteri (1234) uguale all'esempio precedente.
Riga 150:
$a = "questa è una stringa di caratteri"; # in $a c'è una stringa di 33 caratteri .
$a = "" # in $a c'è una stringa vuota !
</syntaxhighlight>
</source>
 
Per il gruppo di stringhe dell'esempio 1 scriverle con "" o con <nowiki>''</nowiki> è esattamente la stessa cosa : il valore finale sarà lo stesso.
Riga 156:
quindi è possibi scrivere:
 
<sourcesyntaxhighlight lang="perl">
$a = "questa e' una stringa di caratteri";
</syntaxhighlight>
</source>
 
senza problemi.
Come nel caso precedente se dovessimo scrivere il carattere ->"<- come carattere all'interno della stringa, occorrerà farlo precedere dal carattere ->\<- :
 
<sourcesyntaxhighlight lang="perl">
$a = "\"virgolettato\""; # a ora ha il valore "virgolettato"
</syntaxhighlight>
</source>
 
Vediamo ora le caratteristiche di usare il simbolo ->"<- al posto di ->'<-
 
<sourcesyntaxhighlight 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 !.
</syntaxhighlight>
</source>
 
Quindi con il delimitatore ->"<- è possibile usare il valore delle variabili al posto del nome della variabile stessa.
Riga 184:
Ma se all'interno di una stringa delimitata da ->'<- ci fosse il carattere ', come si potrebbe scrivere il seguente codice (errato)?
 
<sourcesyntaxhighlight lang="perl">
$a = 'questa e' una stringa'; # stringa di 21 caratteri ERRATA SINTASSI.
</syntaxhighlight>
</source>
 
E se all'interno di una stringa delimitata da ->"<- ci fosse il carattere "?
 
<sourcesyntaxhighlight lang="perl">
$a = "questa e' una "stringa""; # stringa di 23 caratteri ERRATA SINTASSI.
</syntaxhighlight>
</source>
 
Per evitare limitazioni e 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:
 
<sourcesyntaxhighlight lang="perl">
$a = 'questa e\' una stringa'; # in $a c'è una stringa di 21 caratteri GIUSTA SINTASSI.
</syntaxhighlight>
</source>
 
quindi il successivo esempio occorre scriverlo:
 
<sourcesyntaxhighlight lang="perl">
$a = "questa e' una \"stringa\""; # stringa di 23 caratteri GIUSTA SINTASSI.
</syntaxhighlight>
</source>
I caratteri speciali sono delle combinazioni di caratteri semplici che "servono a informare" che si vuole fare una "azione" particolare.
Riga 256:
Se si volesse scrivere la frase : "pippo" corre nel prato
 
<sourcesyntaxhighlight lang="perl">
$b = 'pippo';
$c = 'corre nel prato';
Riga 262:
$d = " \"$b\" $c contento"; # contiene : "pippo" corre nel prato contento
# (un po' meglio)
</syntaxhighlight>
</source>
 
Se si volesse scrivere la frase : PIPPO corre nel prato (indipendentemente da cosa c'è in $b)
 
<sourcesyntaxhighlight lang="perl">
$d = " \U$b\E $c contento"; # verrà mostrato come : PIPPO corre nel prato contento
</syntaxhighlight>
</source>
'''ATTENZIONE''' i simboli ' e " sono operatori ( e non solo convenzioni di sintassi !)
 
Riga 276:
quindi avremmo potuto scrivere anche :
 
<sourcesyntaxhighlight lang="perl">
$a = q//; # stringa vuota
$a = qq//; # stringa vuota
Riga 283:
$d = qq/$b $c contento/; # contiene : pippo corre nel prato contento
$e = q/$b $c contento/; # contiene : $b $c contento
</syntaxhighlight>
</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/.
Riga 289:
Quindi potremmo scrivere:
 
<sourcesyntaxhighlight lang="perl">
$f = "2006/12/22";
$f = qq(2006/12/22);
$f = qq{2006/12/22};
</syntaxhighlight>
</source>
 
====Operazioni con le stringhe====
Riga 300:
Con il carattere . è possibile concatenare più stringhe per esempio:
 
<sourcesyntaxhighlight lang="perl">
$d = $b . " " . $c . " contento"; # contiene : "pippo corre nel prato contento"
</sourcesyntaxhighlight>
 
=====istruzione "complessa" con le stringhe=====
 
<sourcesyntaxhighlight lang="perl">
$d = q/$b=/ . qq/$b/ . "\n"; # contiene "$b=pippo" e un ritorno a capo
</sourcesyntaxhighlight>
ma forse è meglio scriverla:
<sourcesyntaxhighlight lang="perl">
$d = '$b=' . "$b\n"; # contiene "$b=pippo" e un ritorno a capo
</sourcesyntaxhighlight>
oppure anche:
<sourcesyntaxhighlight lang="perl">
$d = '$b=' . $b. "\n"; # contiene "$b=pippo" e un ritorno a capo
</syntaxhighlight>
</source>
 
===I reference (piccola introduzione)===
Riga 323:
 
Esaminiamo la scrittura sintattica:
<sourcesyntaxhighlight lang="perl">
$a = 5;
</syntaxhighlight>
</source>
Vuol dire che associamo "all'etichetta" '''$a''' il contenuto '''5''' ed usiamo poi l'etichetta nel programma al posto del valore:
<sourcesyntaxhighlight lang="perl">
print $a."\n";
</syntaxhighlight>
</source>
Il reference associa '''all'etichetta''' una sua '''''etichetta''''' pertanto lo stesso contenuto può essere scritto utilizzando "l'etichetta" '''$a''' o in '''modo adatto''' il suo reference.
*'''Un''' modo per creare un reference è quello di anteporre alla variabile il simbolo '''\'''.
*'''Un''' modo per riottenere il valore originale è quello di anteporre '''$''' :
 
<sourcesyntaxhighlight lang="perl">
$a = 5; # variabile a
$ref_a = \$a; # Ora sia ref_a che a "associano" lo stesso contenuto 5
Riga 345:
print $a."\n"; # si ottiene 7
print $$ref_a."\n"; # si ottiene 7
</syntaxhighlight>
</source>
 
'''NOTA''': nell'esempio si è associato ad uno scalare $ref_a un altro scalare $a.è possibile associare '''qualsiasi''' tipo di variabile !
Riga 357:
 
È possibile assegnare ad una variabile il valore undef:
<sourcesyntaxhighlight lang="perl">
$u = undef;
</syntaxhighlight>
</source>
 
===Dove sono i booleani?===
Riga 375:
Vediamo il codice:
 
<sourcesyntaxhighlight lang="perl">
$a = 0;
$b = 1;
print "or:".( $a or $b )."\n";
print "and:"( $a and $b )."\n";
</syntaxhighlight>
</source>
che produrrà:
Riga 388:
Esempio con le stringhe:
 
<sourcesyntaxhighlight lang="perl">
$a = "";
$b = "vero";
print "or:".( $a or $b )."\n";
print "and:"( $a and $b )."\n";
</sourcesyntaxhighlight>
 
che produrrà:
Riga 405:
 
Date le tre variabili:
<sourcesyntaxhighlight lang="perl">
$a = 10; # numero 10
$b = '10'; # stringa 10
Riga 413:
print "a:$a , b:$b , c:$c , d:$d\n"; # scrive a:10 , b:10 , c:dieci , d:dieci
</syntaxhighlight>
</source>
 
===Conversione implicita a numeri===
<sourcesyntaxhighlight lang="perl">
print '( $a + $b )='.( $a + $b )."\n"; # scrive ( $a + $b )=20 $b è stato convertito in 10 numerico
Riga 424:
print '( $d + $e )='.( $d + $e )."\n"; # scrive ( $d + $e )=0 $d ed $e sono stati convertiti in 0 numerico
</syntaxhighlight>
</source>
 
===Conversione implicita a stringa===
<sourcesyntaxhighlight lang="perl">
print " $a ha il valore $a\n"; # scrive 10 ha il valore 10 è stato interpretato $a
print ' $a ha il valore $a'."\n"; # scrive $a ha il valore $a NON è stato interpretato $a
Riga 436:
print ' $e ha il valore '.$e."\n"; # scrive $e ha il valore infatti undef viene tradotto come ""
</syntaxhighlight>
</source>
 
==Assegnamento oltre "=" ==
Riga 464:
Vediamo un esempio che chiarisce molto:
L'espressione
<sourcesyntaxhighlight lang="perl">
$a += $b;
</syntaxhighlight>
</source>
viene "espansa" nella sua equivalente:
<sourcesyntaxhighlight lang="perl">
$a = $a + $b;
</syntaxhighlight>
</source>
e così tutte le altre:
<sourcesyntaxhighlight lang="perl">
$a -= $b; $a = $a - $b;
$a *= $b; $a = $a * $b;
Riga 480:
$a .= $b; $a = $a . $b;
$a x= $b; $a = $a x $b;
</sourcesyntaxhighlight>
 
Vediamo ora degli esempi con dei valori:
<sourcesyntaxhighlight lang="perl">
$a = 32;
$b = 5;
Riga 495:
$a .= $b; # ora $a è uguale a '645' ( '64' . '5' )
$a x= $b; # ora $a è uguale a '645645645645645' ( '645' cinque volte )
</syntaxhighlight>
</source>
 
E con le stringhe ?
Un esempio è meglio delle parole:
<sourcesyntaxhighlight lang="perl">
$a = "ciao"; # nota in numero 0
$b = 5;
Riga 511:
$a .= $b; # ora $a è uguale a '05' ( '0' . '5' )
$a x= $b; # ora $a è uguale a '0505050505' ( '05' cinque volte )
</syntaxhighlight>
</source>
 
=Riassunto=