Bonsoir à tous

je veux faire un programme qui lit deux fichiers qui ont ce format:

1 Q0 DerOpthalmologe/80950033 0 1.0 TF_IDF
1 Q0 DerRadiologe/80380710 1 0.9586699756125027 TF_IDF
1 Q0 MonatsschriftKinderheilkunde/01480013 2 0.9586699756125027 TF_IDF
2 Q0 ZfuerKardiologie/90880788 0 1.0 TF_IDF
2 Q0 DerChirurg/90701174 1 0.9177183904260889 TF_IDF
2 Q0 DerUnfallchirurg/81010830 2 0.8655239936791111 TF_IDF
.......

je fais un split pour décomposer chaque ligne si je trouve que le premier chiffre est équivalent, je vérifie le champ 3 (exerOpthalmologe/80950033), s'il sont égaux, je fais une somme des champs Numéro 4 pour les deux lignes (des deux fichiers).
Si la ligne n'a pas d'équivalent (champ 1 et 4), on l'écrit dans le fichier sortie résultat,

Mon problème j'arrive à trouver les lignes dont le champs 1 et 4 sont équivalent, mais j'arrive pas à afficher les autres lignes, je peux les afficher plusiers fois à cause des boucles.
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
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
#!/usr/bin/perl
 
print "bonjour\n";
open(FIC, $ARGV[0]);
open(FICC, $ARGV[1]);
 
  my @a = ();
  my @b = ();
  my $l=0;
  my $v=0;
  my $g=0;
 
 
print "choisis un nom de fichier pour contenir le résultat\n";
 
 
chomp(my $fic2=<STDIN>);
open(FIC2, ">$fic2");
 
 
 
 
 
#---------------------------------------------------
# initialisation des variables
#---------------------------------------------------
 
$i=0;
$j=0;
 
 
while (<FICC>) {
my $ligne=$_;
 
$b[$i]=$ligne;
 
# $b premier fichier et stockage dans une table
 
 
$i++;
}
 
 
 
 
while (<FIC>) {
my $ligne=$_;
 
$a[$j]=$ligne;
 
 
# $a lecture second fichier
 
$j++;
}
 
foreach my $tab(@b){
 
 
 
 
@aa=split(/\s/,$tab);
 
 
 
foreach my $kh(@a){
 
chomp($kh);
@bb=split(/\s/,$kh);
 
if($bb[0] eq $aa[0]){ 
 
 
#comparer le premier champs pour les deu lignes des deux fichiers, si ils sont équivalent, je compare le champs numéro 4 et j'affiche les deux scores
 
 
if($bb[2] eq $aa[2]){
print FIC2 "$aa[0] $aa[2] $aa[4] $bb[4] \n";
 
} else{print FIC2 "$kh ";}
 
 
 
 
 
 
 
 
 
 
}
 
 
 
}
 
 
 
}
le problème de ce code c'est que dès que je veux afficher les autres lignes, j'ai des problèmes
Merci pour votre aide