Perl/Funzioni Native sulle variabili: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
Riga 256:
==Su un carattere==
 
===chomp===
chomp - remove a trailing record separator from a string
chop - remove the last character from a string
chr - get character this number represents
 
toglie (se c'è) l'ultimo "ritorno a capo" da una stringa.
 
===NOTA:=== Quando si è fatto i primi esempi in fondo alla stringhe usate si è sempre messo il carattere speciale "\n" ===TODO link ai caratteri speciali===.Questo carattere consente ,quando si fanno successive print che la nuove stringhe da scrivere inizino "a capo" e non continuino sulla stessa riga.
 
vediamone una applicazione:
 
<source lang="perl">
 
my $a = "questa è una riga con più ritorni a capo\n\n";
my $b = "-" x 10; #questo è una serie di 10 "-" che uso come separatore
print "Originale: \n";
print "$b\n";
print "$a\n"; # nota due righe di spazio
print "$b\n";
print "\n"; #spazio le scritte
 
print "primo chomp \n";
chomp ($a);
 
print "$b\n";
print "$a\n"; # nota una righe di spazio
print "$b\n";
print "\n"; #spazio le scritte
 
print "secondo chomp \n";
chomp ($a);
 
print "$b\n";
print "$a\n"; # nota nessuna riga di spazio
print "$b\n";
print "\n"; #spazio le scritte
 
print "terzo chomp \n";
chomp ($a);
 
print "$b\n";
print "$a\n"; # nota nessuna riga di spazio
print "$b\n";
 
</source>
 
che produce il seguente output
Originale:
----------
questa è una riga con più ritorni a capo
----------
primo chomp
----------
questa è una riga con più ritorni a capo
----------
secondo chomp
----------
questa è una riga con più ritorni a capo
----------
terzo chomp
----------
questa è una riga con più ritorni a capo
----------
 
=== chop ===
 
Toglie l'ultimo carattere di una stringa modificandola.
 
Vediamo questo esempio:
 
<source lang="perl">
 
my $a = "questa è una riga\n";
my $b = "-" x 10; #questo è una serie di 10 "-" che uso come separatore
print "Originale: \n";
print "$b\n";
print "$a\n"; # nota una righe di spazio
print "$b\n";
print "\n"; #spazio le scritte
 
print "primo chop \n";
my $c = chop ($a);
 
print "$b\n";
print "$a\n"; # nota nessuna riga di spazio
print "$b\n";
print "carattere estratto:$c\n"; #mica vorrai vedere un ritorno a capo !!!!
print "$b\n";
print "\n"; #spazio le scritte
 
print "secondo chop \n";
$c = chop ($a);
 
print "$b\n";
print "$a\n"; # nota alla riga manca l'ultimo carattere ...
print "$b\n";
print "carattere estratto:$c\n"; # $c = 'a'
print "$b\n";
print "\n"; #spazio le scritte
 
print "terzo chop \n";
$c = chop ($a);
 
print "$b\n";
print "$a\n"; # nota alla riga mancano ora due caratteri
print "$b\n";
print "carattere estratto:$c\n"; # $c = 'g'
print "$b\n";
 
</source>
 
che produce il seguente output
 
Originale:
----------
questa è una riga
----------
primo chop
----------
questa è una riga
----------
carattere estratto:
----------
secondo chop
----------
questa è una rig
----------
carattere estratto:a
----------
terzo chop
----------
questa è una ri
----------
carattere estratto:g
----------
 
===chr===
 
questa funzione converte un numero in un carattere in base alla codifica ASCII.
Ogni carattere che vediamo sullo schermo (ma anche quelli che non vediamo come i ritorni a capo ed altri ) ha un numero corrispondente.Questi numeri vengono "inviati allo schermo" e vengono convertiti nei simboli (caratteri) che vediamo sullo schermo.
Per ovvie ragioni di comodità i simboli che rappresentano i numeri sono contigui (dal??? al ??) ed anche le lettere alfabetiche (dal xxx al yyy minuscole - maiuscole)
===TODO link alla tabella ascii===
 
<source lang="perl">
 
my $a = chr(64); # corrisponde al carattere @
print "carattere corrispondente a 64:$a\n";
 
foreach $a (qw (113 117 101 115 116 97 32 232 32 117 110 97 32 114 105 103 97) )
{
print chr($a); #NOTA: qui non c'è il ritorno a capo !!!
# altrimenti scriverebbe le lettere in verticale !
}
print "\n"; #qui si torna a capo ma potrebbe essere nei numeri sopra
 
</source>
 
che produce
 
carattere corrispondente a 64:@
questa è una riga
 
==Conversione==