vendredi 21 octobre 2011

Tableaux de hashmap

Soit les hashmap suivantes:

my %h1 = ("toto"=>"toto12", "test"=>"test12");
my %h2 = ("xavier"=>"0471...", "vincent"=>"047945...");

Il n'est pas permis d'écrire ceci en Perl

my @array=undef;
@array[0]=%h1;
@array[1]=%h2;

Il est impératif de référencer les hashmap dans le tableau:

my @array=undef;
@array[0]=\%h1;
@array[1]=\%h2;

Ceci fonctionnera beaucoup mieux.

Là où cela devient amusant c'est pour récupérer les hashmap contenue dans le tableau:

$array[1]->{vincent} me donnera 047945...

si je veux defnir %hmap qui contiendra la hash contenue dans $array[1] je pourrais faire comme suit:
%hmap=%$array[1];
Cela fera malheureusement planter PERL lamentablement.
soit j'écris

$hmap_ref=$array[1];
%hmap=%$hmap_ref;

Cela marchera mais pour un développeur PERL cette écriture est beaucoup trop lourde:
On pourra donc faire plus concis (et plus illisible) en utilisant ceci:

%hmap=%{$array[1]}

Attention c'est la déréférenciation d'un tableau et non pas la valeur de la clé d'une hash (dont la clé serait $array[1]).

Voilà de quoi s'amuser. ..

Aucun commentaire:

Enregistrer un commentaire