Comparaison de 2 fichiers

Comparaison de 2 fichiers - Perl - Programmation

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="e:/fc.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="e:/fc1.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

Reply

Marsh Posté le 07-09-2005 à 10:43:23   

Reply

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
 


Message édité par Elmoricq le 07-09-2005 à 11:37:05
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed