Bonjour,
Je voudrais comparer deux fichiers contenant une liste complète et pour le second une liste partielle. Ces deux fichiers sont triés. J'aimerais une lecture simultanée des deux fichiers. Pour ça je compare la 1ere ligne du fichier 1 avec le fichier 2 :
-Si elles sont identiques j'imprime la ligne du fichier 1 et 1 pour indiquer sa présence
-Si elles sont différentes, je compare les 2 chaînes de caractères (elles sont triées). Si la ligne2 est inférieure a la ligne1 je compare la ligne1 avec la ligne2 suivante sinon j'imprime la ligne1 suivis d'un 0 pour indiquer son absence.
J'ai deja commencer a regarder comment faire :
Mais cela ne focntionne pas.
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 #!/usr/bin/perl use strict; use warnings; use Getopt::Long; my ($all,$TopHat,$T); GetOptions( "all:s" => \$all, "TopHat:s" => \$TopHat); if (!defined $all) { die "Error : missing all file\n"; } if (!defined $TopHat) { die "Error : missing TopHat file\n"; #Les trois fichiers my $fic1 = "$all"; my $fic2 = "$TopHat"; #Pour la lecture des lignes my $ligne1; my $ligne2; #Pour la lecture du contenu des lignes my $contenu1; my $contenu2; #Pour l'ouverture des lignes open(FIC1,$fic1); open(FIC2,$fic2); #Tant qu'il y a des lignes dans les fichiers while (my $ligne1 = <FIC1>) { chomp($ligne1); while (my $ligne2 = <FIC2>) { chomp($ligne2); if ($ligne1 eq $ligne2){ print "$ligne1 1"; } elsif ($ligne1 lt $ligne2){ print "$ligne1 0"; } } } }
Quelqu'un saurait il m'aider?
Merci d'avance
Partager