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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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.