Je ne crois pas que ce script fasse ce que tu veux...
Si tu est pressé :
1 2 3
| sort -u gbadoclist.tmp > gbadoclist.sorted
sort -u sgmdoclist.tmp > sgmdoclist.sorted
perl compare_sorted.pl gbadoclist.sorted sgmdoclist.sorted | egrep "^NOK1" | sed '1,$s/^NOK1.//g' > desynchro.log |
et compare avec ton résultat.
Quelques remarques :
open (FIC1 ,"<gbadoclist.tmp") or die"open: $!";
....
close(FIC1);
pas optimal pour plusieurs raisons:
- plutot que de polluer l'espace de noms global, il est préférable d'utliser des variables pour les handle de fichiers, donc open my $handle, ...
- la forme à deux arguments de open est découragée, donc open my $handle, '<', 'gbadoclist.tmp'
- le message d'erreur n'est pas explicite (on ne sait pas à quel fichier il se reporte). Il est préférable d'utiliser une variable pour le nom de fichier et de la réutiliser dans le message d'erreur.
- dans un petit script comme celui là il n'est pas nécessaire de fermer le fichier; mais si tu le fermes autant signaler une erreur si elle se produit (surtout pour les fichiers ouverts en écriture).
donc coder plutôt
1 2 3 4 5
|
my $fn1 = 'gbadoclist.tmp'
open my $fic1, '>', $fn1 or die "open $fn1: $!"
...
close $fic1 or die "close $fn1: $!"; |
si tu ne fermes pas le fichier tu peux utiliser un for :
Partager