Perl tableau de tables de hashage
trinity666
-
lami20j Messages postés 21331 Date d'inscription Statut Modérateur, Contributeur sécurité Dernière intervention -
lami20j Messages postés 21331 Date d'inscription Statut Modérateur, Contributeur sécurité Dernière intervention -
Bonjour,
voici ma fonction retournant un tableau de tables de hashages:
sub fonc2{
my @a=();
my %c={"a"=>"1","b"=>"2","c"=>"3"};
my %d={"d"=>"4","e"=>"5","f"=>"6"};
my %e={"g"=>"7","h"=>"8","i"=>"9","j"=>"10"};
$a[0]=\%c;
$a[1]=\%d;
$a[2]=\%e;
return @a;
}
lorsque je veux récupérer @a je fais:
@b=fonc2();
je veux récupérer mes tables de hash je ne sais pas comment faire j'ai tout essayé:
%h=%{$b[0]} ne marche pas
%h=%{%{$b[0]}} non plus
%h=%{${$b[0]}} non plus
%h=%{%{@b[0]}} non plus
j'ai meme essayé d'enlever les références de ma fonction:
$a[0]=%c;
$a[1]=%d;
$a[2]=%e;
dans la table b il y a des symboles bizarres :1/81/81/8
les tables de hashage sont vides
comment faire
ca fait 2 jours que je cherche
merci par avance
voici ma fonction retournant un tableau de tables de hashages:
sub fonc2{
my @a=();
my %c={"a"=>"1","b"=>"2","c"=>"3"};
my %d={"d"=>"4","e"=>"5","f"=>"6"};
my %e={"g"=>"7","h"=>"8","i"=>"9","j"=>"10"};
$a[0]=\%c;
$a[1]=\%d;
$a[2]=\%e;
return @a;
}
lorsque je veux récupérer @a je fais:
@b=fonc2();
je veux récupérer mes tables de hash je ne sais pas comment faire j'ai tout essayé:
%h=%{$b[0]} ne marche pas
%h=%{%{$b[0]}} non plus
%h=%{${$b[0]}} non plus
%h=%{%{@b[0]}} non plus
j'ai meme essayé d'enlever les références de ma fonction:
$a[0]=%c;
$a[1]=%d;
$a[2]=%e;
dans la table b il y a des symboles bizarres :1/81/81/8
les tables de hashage sont vides
comment faire
ca fait 2 jours que je cherche
merci par avance
A voir également:
- Perl tableau de tables de hashage
- Tableau word - Guide
- Tableau ascii - Guide
- Trier un tableau excel - Guide
- Dans le fichier, générez ce tableau automatiquement (tableau croisé dynamique ou table de pilote) à partir des quatre premières colonnes. - Guide
- Imprimer tableau excel sur une page - Guide
4 réponses
j'ai le même problème.
Posé plus simplement ça donnerait : comment faire pour qu'une fonction renvoie deux tables de hashages, et surtout pour récupérer ces deux tables en évitant leur applatissement (que les deux tables se retrouvent dans une seule liste...)
Posé plus simplement ça donnerait : comment faire pour qu'une fonction renvoie deux tables de hashages, et surtout pour récupérer ces deux tables en évitant leur applatissement (que les deux tables se retrouvent dans une seule liste...)
Re,
Tu dois utiliser les paranthèses pour la définition d'un hash et pas les accolades ;-)
Ici my %c={"a"=>"1","b"=>"2","c"=>"3"}; , tu affectes un hash anonyme à un hash au lieu d'affecter à un scalaire.
Par exemple
Voici quelque version pour ta fonction
Tu dois utiliser les paranthèses pour la définition d'un hash et pas les accolades ;-)
Ici my %c={"a"=>"1","b"=>"2","c"=>"3"}; , tu affectes un hash anonyme à un hash au lieu d'affecter à un scalaire.
Par exemple
my $c={"a"=>"1","b"=>"2","c"=>"3"};
Voici quelque version pour ta fonction
sub fonc2{ my @a=(); my %c=("a"=>"1","b"=>"2","c"=>"3"); my %d=("d"=>"4","e"=>"5","f"=>"6"); my %e=("g"=>"7","h"=>"8","i"=>"9","j"=>"10"); $a[0]=\%c; $a[1]=\%d; $a[2]=\%e; return @a; }ou
sub fonc2{ my %c=("a"=>"1","b"=>"2","c"=>"3"); my %d=("d"=>"4","e"=>"5","f"=>"6"); my %e=("g"=>"7","h"=>"8","i"=>"9","j"=>"10"); my @a=(\%c,\%d,\%e); return @a; }ou encore
sub fonc2{ my @a = (); $a[0] = {"a"=>"1","b"=>"2","c"=>"3"}; $a[1] = {"d"=>"4","e"=>"5","f"=>"6"}; $a[2] = {"g"=>"7","h"=>"8","i"=>"9","j"=>"10"}; return @a; }
et surtout pour récupérer ces deux tables en évitant leur applatissement (que les deux tables se retrouvent dans une seule liste...)
En utilisant les références.
Mais bien évidemment ça marche pas...
Sauf que j'arrive pas à trouver la coquille...
suivi de l'appel de la fonction :
Le problème est dnc résolu pour moi
On était en train de poster en même temps ;-).
http://www.commentcamarche.net/forum/affich 9694055 perl tableau de tables de hashage?#8