Que penses-tu de:
my @tableau = ( { "cle1"=>"valeur1", "cle2"=>"valeur2" } ,
{ "cle1"=>"valeur3", "cle2"=>"valeur4" } ,
{ "cle1"=>"valeur5", "cle2"=>"valeur6" }
);
foreach $tuple (@tableau) {
while (($key, $val) = each(%$tuple)) {
$$key = $val;
}
printf "cle1=%s, cle2=%s\n", $cle1, $cle2;
}
?
qui permet d'éviter le eval.
philippe
Florent Guiliani a écrit :
Amis scripteurs bonjour,
Aujourd'hui je me pose la question suivante "En perl, comment
déclarer automatiquement
des variables provenant d'une hashtable avec clé = valeur ?"
Je m'explique: j'ai un tableau de hashtable ex:
my @tableau = ( { "cle1"=>"valeur1", "cle2"=>"valeur2" } ,
{ "cle1"=>"valeur3", "cle2"=>"valeur4" } ,
{ "cle1"=>"valeur5", "cle2"=>"valeur6" }
);
je parcour ce tableau comme ceci:
my $nbelement = scalar( @tableau );
for( my $i ; $i < $nbelement ; $i++){
#et là j'accède à $tableau[$i]{'cle1'} ou $tableau[$i]{'cle2'}
#j'en profite pour déclarer:
my $cle1 = $tableau[$i]{'cle1'}; # c'est ces 2 déclarations
my $cle2 = $tableau[$i]{'cle2'}; # qui nous intéressent ici
#reste du traitement
}
J'aimerais que ces 2 déclarations (en réalité un bonne dizaine et qui
en plus ne cesse d'augmenter)
soient faites automatiquement, j'aimerais faire un truc du style:
my $nbelement = scalar( @tableau );
for( my $i ; $i < $nbelement ; $i++){
map( eval \$$_ = $tableau[$i]{'$_} , keys $tableau[$i] );
}
mais voilà je but.... qqun aurait une idée ?