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 :
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";
		}
	}
	}
}
Mais cela ne focntionne pas.
Quelqu'un saurait il m'aider?
Merci d'avance