Perl: Hash in PERL

« Older   Newer »
  Share  
view post Posted on 11/6/2010, 15:29

Group:
,,,..--::|| AMMINISTRATORE ||::--..,,,
Posts:
1,602
Location:
Scheda di rete

Status:



Hash In Perl

Messaggioda WhiteCoders » 24/05/2010, 14:51
L'ultimo tipo di variabile in Perl sono gli Hash, noti anche come dizionari, che sono strutture dati per associare qualsiasi valore scalari ad una stringa chiamata Chiave.
Il Sygil da adottare è %, le chiavi contenute, anche se sono stringhe, possono essere incluse tra gli apici...

esempio :

Codice: Seleziona tutto
my %­posizione = ('pianeta', 'Terra', 'continente', 'Europa', 'stato', 'Italia', 'città', 'Firenze');



...come essere separate da un fat comma, ovvero il simbolo =>, infatti scritta come l'esempio precedente o scritto come il seguente non cambia niente.

esempio :

Codice: Seleziona tutto
my %­posizione = (
pianeta => 'Terra',
continente => 'Europa',
stato => 'Italia',
città => 'Firenze'
);



Per verificare l'esistenza di una di una chiave all'interno di un Hash si usa la funzione exists.

Esempio :

Codice: Seleziona tutto
$dati_geografici_certi =
exists( $posizione{pianeta} ) &&
exists( $posizione{continente} )



Se vogliamo lasciare vuota una, o più chiavi associate ad un Hash dobbiamo usare undef come valore.
In questi casi si può affiancare alla funzione exists la funzione defined, per verificare se una chiave esiste e il suo valore è definito o no.

Esempio :

Codice: Seleziona tutto
use strict;
use warnings;
use feature qw/say/;

my %­posizione = (
stato => 'Italia',
città => undef
);

print "Stato : ";
say exists $posizione{stato}
? 'esiste' : 'non esiste';
say defined $posizione{stato}
? 'definito' : 'non definito';

print "Citta' : ' ";
say exists $posizione{città}
? 'esiste' : 'non esiste';
say defined $posizione{città}
? 'definito' : 'non definito';



il cui relativo output sarà :

Stato: esiste
definito
Città : esiste
non definito


Questo è tutto, alla prossima lezione sulla gestione delle stringhe!

guida by Coders
 
Web     Top
0 replies since 11/6/2010, 15:29   173 views
  Share