[langage] hash et fonction
salut,
j'ai un hash qui possède une clé de type :
Citation:
gi|19612490|gb|AAH49588.1|__116
gi|19612490|gb|AAH49588.1|__115
gi|19612490|gb|AAH49588.1|__114
gi|19612490|gb|AAH49588.1|__113
gi|19612490|gb|AAH49588.1|__112
gi|19612490|gb|AAH49588.1|__111
gi|19612490|gb|AAH49588.1|__110
gi|19612490|gb|AAH49588.1|__11
hi|19612490|gb|AAH49588.1|__109
hi|19612490|gb|AAH49588.1|__108
hi|19612490|gb|AAH49588.1|__107
hi|19612490|gb|AAH49588.1|__106
hi|19612490|gb|AAH49588.1|__105
cette clé est en fait composé de 2 éléments:
gi|19612490|gb|AAH49588.1| et __11
et j'aimerai pouvoir trier ce hash , d'abord par ordre alphabétique pour le 1er élément puis par ordre numérique pour le 2ème élément
Pour cela, je dois utiliser la fonction ( je sais que ca marche avec!)
Code:
1 2 3 4 5 6 7
| sub byseq {
my ($a1,$a2) = split /___/,$a; ## split permet de separer avant ($a1) et apres ($a2) __ de $a, $a etant la cle du hash
my ($b1,$b2) = split /___/,$b; ## split permet de separer avant ($b1) et apres ($b2) __ de $b, $b etant la cle du hash
if ($a1 ne $b1) { return ($a1 cmp $b1); }
return ($a2-$b2);
} |
en fait cette fonction permet de à partir des deux clés:
gi|19612490|gb|AAH49588.1|__11
hi|19612490|gb|AAH49588.1|__109
de séparer les deux éléments de la clé en $a1 pour gi|19612490|gb|AAH49588.1|, $a2 pour 11, $b1 pour hi|19612490|gb|AAH49588.1|, et $b2 pour 109
puis on compare $a1 et $b1, puis $a2 et $b2
mais je na sais pas comment appeler cette fonction.
merci de votre aide