OVH Cloud OVH Cloud

Problème de déréférence d'un hash dans une fonction

4 réponses
Avatar
ctobini
Bonjour, j'ai un petit probl=E8me avec une r=E9f=E9rence sur un hash, dans
une fonction :

J'ai un hash du style $hash{cle1}{cle2}{cle3}{valeur} =3D valeur1;

Je voudrais utiliser ce hash dans une fonction :

fonction (\%hash);

sub fonction {
my ($h) =3D @_;
foreach my $key (%$h) {
print "$key\n"; #
ok =E7a marche
foreach my $key2 (%{$h}{$key}) {
print "$key2\n"; #
erreurs ici, je n'arrive pas =E0 d=E9r=E9f=E9rencer le hash
}
}
}

J'ai tent=E9 des variantes avec %$hash{key}, %{{$h}{$key}} mais rien n'y
fait.

Merci si vous pouvez m'aider.

C=2E Tobini

4 réponses

Avatar
Paul Gaborit
À (at) 2 Dec 2005 02:13:05 -0800,
"ctobini" écrivait (wrote):
sub fonction {
my ($h) = @_;
foreach my $key (%$h) {
print "$keyn"; #
ok ça marche
foreach my $key2 (%{$h}{$key}) {


foreach my $key2 (%{$h->{$key}}) {

print "$key2n"; #
erreurs ici, je n'arrive pas à déréférencer le hash
}
}
}



Et voili...

--
Paul Gaborit - <http://perso.enstimac.fr/~gaborit/>
Perl en français - <http://perl.enstimac.fr/>

Avatar
Jacques Caron
Salut,

On Fri, 02 Dec 2005 11:37:34 +0100, Paul Gaborit
wrote:


À (at) 2 Dec 2005 02:13:05 -0800,
"ctobini" écrivait (wrote):
sub fonction {
my ($h) = @_;
foreach my $key (%$h) {
print "$keyn"; #
ok ça marche
foreach my $key2 (%{$h}{$key}) {


foreach my $key2 (%{$h->{$key}}) {

print "$key2n"; #
erreurs ici, je n'arrive pas à déréférencer le hash
}
}
}



Et voili...


Il ne manquerait pas des "keys" aussi?

foreach my $key (keys %$h)
...
foreach my $key2 (keys %{$h->{$key}})

Jacques.
--
Oxado http://www.oxado.com/


Avatar
Paul Gaborit
À (at) Fri, 02 Dec 2005 12:20:17 +0100,
"Jacques Caron" écrivait (wrote):
Il ne manquerait pas des "keys" aussi?

foreach my $key (keys %$h)
...
foreach my $key2 (keys %{$h->{$key}})


Exact. J'ai répondu trop vite...

--
Paul Gaborit - <http://perso.enstimac.fr/~gaborit/>
Perl en français - <http://perl.enstimac.fr/>

Avatar
ctobini
Bonjour et merci à tous les 2 pour vos réponses,

J'avais modifié la réponse de Jacques :-) Ca marche parfaitement.

Merci encore et bonne journée.

C. Tobini