Perl/Variabili hash: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
Riga 90:
==== exists e delete ====
 
Queste due funzioni consentono:
# di verificare se un certo dato esiste ,
# edi poter cancellare un certo dato.
 
Quindi usando exists è possibile verificare la presenza di una chiave:
 
%a = ( mario => 'maria'
, giancarlo => 'giancarla'
, carmelo => 'carmela');
 
print (exists $a{mario})." , ".(exists $a{beppe})."\n";
 
che mostrerà:
 
1 , 0
 
Mentre usando delete , come per gli array, è possibile togliere una corrispondenza chiave => valore :
 
%a = ( mario => 'maria'
, giancarlo => 'giancarla'
, carmelo => 'carmela');
$b = delete ( $a{mario} );
print "b=$b , %a:".join(" , " ,(keys %a))."\n";
 
che mostrerà:
 
1 , 0
b=maria , %a:giancarlo , carmelo
 
===Notazione { x , y , z } ===
Come per i vettori, anche per gli hash esiste una notazione che consente di trattare più informazioni su uno stesso hash.
 
%lettere = ( a => 'A', b => 'B' , c => 'C' , d => 'D' );
@lettere{ e , f , g } = ( 'E' , 'F' , 'G' );
print "lettere di e :$lettere{e}\n";
 
che mostrerà:
 
lettere di e :E
 
 
'''DA NOTARE''' che, nel secondo assegnamento, il sigillo di lettere è cambiato da % a @ : dato che si tratta di più valori ($lettere{e},$lettere{f},$lettere{g}) è '''obbligatorio''' mettere '''@''' e non %.
Se ci si riflette un attimo l'array ( 'E' , 'F' , 'G' ) contiene solo i valori e deve corrispondere ad un array.Nel caso ci fosse stato il sigillo '''%''' le chiavi devono essere nell'array di destra.