[Perl] Question sur les Hash/keys

Résolu
KuKrApOk59 Messages postés 437 Date d'inscription   Statut Membre Dernière intervention   -  
KuKrApOk59 Messages postés 437 Date d'inscription   Statut Membre Dernière intervention   -
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 11069 Date d'inscription   Statut Contributeur Dernière intervention   1 846
 
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 437 Date d'inscription   Statut Membre Dernière intervention   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