Bonjour,

Je stocke un tableau de hash (sous forme hash de hash de hash...) dans un fichier avec tie, de la façon suivante:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
 
#!/usr/bin/perl -w
use AnyDBM_File;
use MLDBM;
use Fcntl;
 
tie %hIcsAfnor, 'MLDBM', 'stockExtract', O_CREAT|O_RDWR, 0640 or die $!;
 
my $ics=0;
foreach $_ (keys (%tabSsGroup)) {
	$ics=$_;
	my $retVal=&pkgICS::findIcs($fileSrc, $ics.".99");
	if ($retVal) {
		$hIcsAfnor{$ics}{$tabSsGroup{$ics}}{"sg99=1"}="";
	}
	else {
             $hIcsAfnor{$ics}{$tabSsGroup{$ics}}{"sg99=0"}="";
	}
	$retVal=&pkgICS::findIcs($fileSrc, $ics.".01");
	if ($retVal) {
                my $libIcs=&pkgICS::findLibIcs($fileSrc, $ics.".01");
		if ($libIcs ne 0) {
	                $hIcsAfnor{$ics}{$tabSsGroup{$ics}}{"sg01=1"}=$libIcs;
		}
	}
	else {
             $hIcsAfnor{$ics}{$tabSsGroup{$ics}}{"sg01=0"}="";
	}
}
untie(%hIcsAfnor);
Apparemment tout se passe correctement, les sorties sont bonnes et j'obtient deux fichiers stockExtract.dir et stockExtract.pag...

Le problème arrive quand je veux accéder à ces données stockées...
Impossible! ou presque...en fait je n'accède que la première clé du premier tableau de hash mais pas les autres clés ni valeurs des autres tableaux de hash et je ne sais pas comment faire...
Voici le code que je fais pour lire les données et qui ne m'affiche que la première clé...

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
 
#!/usr/bin/perl -w
use MLDBM;
use AnyDBM_File;
use Fcntl;
 
tie %hIcsAfnor, 'MLDBM', 'stockExtract', O_CREAT|O_RDWR, 0666 or die $!;
while (($key,$val) = each %hIcsAfnor) {
	print $key, "\n";
	print $val, "\n";
	while (($key1, $val1) = each %$val) {
		print $key1, "\n";
		print $val1, "\n";
		while (($key2, $val2) = each %$val1) {
			print $key2, ' = ', $val2, "\n";
		}
	}
}
untie(%hIcsAfnor);
Je ne sais plus comment faire alors je me tourne vers vous pour une éventuelle solution, d'autant plus qu'il n'y a pas grand chose à ce sujet sur le forum, sur la perldoc et autre googlesearch...
Merci d'avance de vos réponses.