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
|
#!/usr/bin/perl
use strict;
use warnings;
#Variables
my (@contenu_fic1,@contenu_fic2,@contenu_fic3);
my (@ligne_fic1,@ligne_fic2);
my ($taille_fic1,$taille_fic2,$taille_min);
#Recuperation du contenu du fichier 1 dans le tableau @contenu_fic1
open(FIC1,"<fichier1.txt") or die ("Impossible de lire fichier1.txt\n");
while(<FIC1>)
{
chomp;
push(@contenu_fic1,$_);
}
close FIC1;
#Recuperation du contenu du fichier 2 dans le tableau @contenu_fic2
open(FIC2,"<fichier2.txt") or die ("Impossible de lire fichier2.txt\n");
while(<FIC2>)
{
chomp;
push(@contenu_fic2,$_);
}
close FIC2;
#Determination de la taille du plus petit des deux tableaux
$taille_fic1 = scalar(@contenu_fic1);
$taille_fic2 = scalar(@contenu_fic2);
if($taille_fic1<$taille_fic2){$taille_min = $taille_fic1}
else {$taille_min = $taille_fic2}
#Calcul du contenu du fichier resultat, ligne par ligne
for(my $i=0;$i<$taille_min;$i++)
{
#On separe les valeurs de la ligne (valeurs separees par un ";")
@ligne_fic1=split(";",$contenu_fic1[$i]);
@ligne_fic2=split(";",$contenu_fic2[$i]);
#Si les valeurs des colonnes 1 et 2 sont les memes pour les deux fichiers
if($ligne_fic1[0]==$ligne_fic2[0] && $ligne_fic1[1]==$ligne_fic2[1])
{
$contenu_fic3[$i]="$ligne_fic1[0];$ligne_fic1[1];$ligne_fic1[2];$ligne_fic2[2]\n";
}
#Sinon
else
{
$contenu_fic3[$i]="$ligne_fic1[0];$ligne_fic1[1];---;$ligne_fic2[2]\n".
"$ligne_fic2[0];$ligne_fic2[1];$ligne_fic1[2];---\n";
}
}
#Ecriture du tableau @contenu_fic3 dans un fichier "fichier3.txt"
open (FIC3,">fichier3.txt") or die ("Impossible d'ecrire sur fichier3.txt\n");
print FIC3 @contenu_fic3;
close FIC3; |
Partager