Concaténer des tableaux de hachage
Bonjour à tous,
je débute sur perl (d'habitude j'utilise bash) et je bloque en essayant de concaténer des tableaux de hachage. Le but de la manip est de concaténer plusieurs fichiers contenant des séquences, du style :
fichier 1 :
ind1 [sequence]
ind2 [sequence]
ind5 [sequence]
fichier 2 :
ind3 [sequence]
ind4 [sequence]
ind5 [sequence]
sachant que tous les individus ne sont pas représentés dans tous les fichiers (il va donc falloir que j'ajoute les données manquantes au fil de la concaténation).
ce que j'ai fais pour l'instant :
Code:
1 2 3
| open(ind, '<', 'concat');
my %concat=<ind>;
print %concat; |
créé un tableau de hashage dont les clés sont les noms de mes individus (contenus dans le fichier concat).
ensuite
Code:
1 2 3
| open(locus1, '<', 'locus0001');
my %locus1=<locus1>;
while(<locus1>){/([A-Za-z0-9]*)[[:space:]]*(.*)/; push @{$concat{$1}}, $2, "\n";} |
J'ouvre mon premier fichier de séquences (locus0001), je le stocke dans un tableau de hashage et je le concatène avec celui contenant les noms d'individus.
Seulement, ca ne marche pas et j'obtiens quelque chose comme ca :
Code:
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 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
| Neu83ARRAY(0x13b8130)Sbz179
And54
oph_D
Brk117
BZ1
Brk120
1488ARRAY(0x13b7fc8)Neu73
Shv51
Dej22
Neu56
Ker382
Sbz177
Krk148
Neu50
Neu18
BZ16
Sis367
SGH90
Ap106
MrD264
Neu83
Ker380
And57
SGH88
Tov320
smk228
Sis354
Voj344
Smk226
Ngs408
1488
DgH208
Krk150
ToV319
DgH207
Neu04
MrD266
Neu55
Neu11
Neu84ARRAY(0x13cf428)Neu84
Neu36
Neu73ARRAY(0x13b80a0)Ap105
Neu72
Shv43
oph_T
Ngs394
Voj345 |
En lieu et place de mes séquences, une chaine de type ARRAY(...), et je ne sais pas ce que ca veut dire, et il y a des doublons dans les noms des individus...
Quelqu'un aurait une idée ?
merci d'avance,
Lois.