Bonjour Jasmine,
je relis attentivement ce que tu cherches à faire, et, si j'ai finalement bien compris à la lumière de ton dernier message, clairement, ce que j'avais proposé n'est pas la solution.
Je continue à penser, cependant, que le hash de hash, bien que ce soit une solution possible, n'est pas la solution la plus simple et n'est pas indispensable, et qu'un simple hash est sans doute suffisant: dès que tu vois une clef et une valeur, tu la mets dans un hash, dès que tu revois la même clef, tu imprimes un message d'erreur si la valeur est différente, tout cela en une seule passe. Un truc dans ce genre (toujours pas testé, faute de données de test significatives):
1 2 3 4 5 6 7 8 9 10 11 12 13
|
my %comp_tab;
for my $i (1..$#tab){ # es-tu sûre que ça ne commence pas à 0?
my $Compound = $tab[$i][$Compound_index];
my $StdInChIKey = $tab[$i][$StdInChIKey_index];
next if (($Compound eq '') or ($StdInChIKey eq ''));
$Compound = lc $Compound;
if (exists $comp_tab{$Compound}) {
print "ERROR : $rep\t$Compound\n" if $comp_tab{$Compound} ne $StdInChIKey; # je suppose que ce n'est pas une erreur si on trouve deux fois la même valeur
} else {
$comp_tab{$Compound} = $StdInChIKey;
}
} |
Partager