[Perl] Question sur les Hash/keys

Résolu
KuKrApOk59 Messages postés 444 Statut Membre -  
KuKrApOk59 Messages postés 444 Statut Membre -
Bonjour,

Je précise tout d'abord, que je suis plutôt débutant niveau Perl, soyez indulgents ;)
Je suis en train de scripter un petit bout de Perl avec des Hash de ce type :

$HASH{'Clef1'}{'ClefA'} = "valeur1"; 
$HASH{'Clef1'}{'ClefB'} = "valeur2"; 
$HASH{'Clef1'}{'ClefC'} = "valeur3"; 

$HASH{'Clef2'}{'ClefA'} = "valeur4"; 
$HASH{'Clef2'}{'ClefB'} = "valeur5"; 
$HASH{'Clef2'}{'ClefC'} = "valeur6";

J'aimerai acceder à mes valeurs
J'arrive à recuperer Clef1 et Clef2 en faisant

foreach (keys(%HASH)) { 
  print $_."<br>"; 
}

Mon but serait de recuperer ClefA ClefB ClefC
Je ne trouve pas comment faire un keys de keys pour avoir cette (en l'occurence ces) valeurs

J'espère que vous pourrez éclairer ma lanterne !

Si vous avez votre réponse, pensez à spécifier : [Résolu]
A voir également:

2 réponses

fiddy Messages postés 11653 Statut Contributeur 1 847
 
Salut,
Je n'ai pas tout compris ce que tu voulais, mais voici un code qui devrait t'aider. Avec ça, tu peux afficher tous les éléments.
for my $k1 (keys %HASH) {
    for my $k2 (keys %{ $HASH{$k1} }) {
        print "$k1 $k2 $HASH{$k1}{$k2}\n";
    }   
}

Cdlt
0
KuKrApOk59 Messages postés 444 Statut Membre 84
 
Merci

J'ai fini par me rendre compte qua la syntaxe pour trouver les clefs d'une clefs est un peu particuliere

Pour faire avancer le truc et partager, voici mon code, avec le resultat de sortie
KuK@Nibbler:~$ cat ccm.pl 
#!/usr/bin/perl

$HASH  = ();

$HASH{'Clef1'}{'ClefA'} = "valeur1";
$HASH{'Clef1'}{'ClefB'} = "valeur2";
$HASH{'Clef1'}{'ClefC'} = "valeur3";

$HASH{'Clef2'}{'ClefA'} = "valeur4";
$HASH{'Clef2'}{'ClefB'} = "valeur5";
$HASH{'Clef2'}{'ClefC'} = "valeur6";

foreach (sort keys(%HASH)) {
  print $_." => ";
    foreach (sort keys %{$HASH{$_}}) {
      print $_." ";
    }
  print "\n";   
}

Résultat en sortie :
KuK@Nibbler:~$ ./ccm.pl 
Clef1 => ClefA ClefB ClefC 
Clef2 => ClefA ClefB ClefC 

Y'a probablement mieux, mais en tout cas j'obtiens ce que je voulais ^^
0