Comparaison de 2 fichiers - Perl - Programmation
Marsh Posté le 07-09-2005 à 11:30:55
Solution : avoir le réflexe CPAN ( http://www.cpan.org/ ), et utiliser l'un des modules suivant :
Text::Diff : http://search.cpan.org/~rbs/Text-D [...] xt/Diff.pm
File::Compare : http://search.cpan.org/~ni-s/File- [...] Compare.pm
Array::Compare : http://search.cpan.org/~davecross/ [...] Compare.pm
Marsh Posté le 07-09-2005 à 10:43:23
Bonjour,
Je suis actuellement en stage et l'on me demande d'ecricre un script en perl pouvant faire la comparaison entre 2 fichier à jour J et jour J-1.
D'en ressortir les differences pour prevenir l'admin d'une éventuelle modification de parametre d'un individu (ex: date de sortie prorogé) ou d'ajout complet d'une personne.
Les fichiers sont de format txt sous la forme:
Matricule;Sexe;Nom;Prenom;cf;libCF;Date sortie
0072583;MR;MOUGIN;PAUL;011;CARTERS;30;
0075350;MR;GENTILS;PATRICK;011;CARTERS;32;
etc...
Apres avoir chercher sur le forum j'ai fait un premier jet qui ne fonctionne pas (et d'ailleurs qui ne prend pas en compte tout les desirata) en effet il n'arrive pas à comparer chaque valeur entre ";" de chaque fichier avec l'autre.
Pour faire un essai j'essaye juste de comparer les differentes date de sortie
#!C:\Perl\bin\perl.exe
use strict;
my @tab=();
my $file="efc.txt";
print "ouverture du fichier Jour J\n";
open(my $fd, $file) or die "$file : $!";
foreach my $line(<$fd> ) {
chomp($line);
my @datas=split(";", $line);
print $datas[6]."\n"
}
system "pause \n";
close($fd);
print "ouverture du fichier Jour J-1\n",
my @tab1=();
my $file="efc1.txt";
open(my $fd, $file) or die "$file : $!";
foreach my $line(<$fd> ) {
chomp($line);
my @datas1=split(";", $line);
print $datas1[6]."\n"
}
system "pause \n";
close($fd);
print "comparaison des 2 fichiers\n";
system "pause \n";
if (@tab != @tab1){print "Il y a eu ajout d'utilisateur \n";}
else {print "Pas d'ajout dans la base de donnee\n";}
system "pause \n";
if ( $tab[6] != $tab1[6] || $tab[6] ne $tab1[6] ){print "Il y a une modification de la date de sortie \n";}
else {print "Pas de modification de la date de sortie\n";}
system "pause \n";
Et depuis je me casse les dents dessus, toutes aides seraient la bienvenue.
merci d'avance