> Oui effectivement il fonctionne ce script perl... mea culpa. > C'est simplement le fichier initial (pas de retour chariot à > l'intérieur des lignes) qui diffère du fichier actuel (retours > chariot dans les lignes).
hello, il y a pas mal d'amélioration possibles pour rendre ton script un peu plus facile a maintenir mais voilà celle qui me parait la plus intéressante tu écris my %lines; foreach (<$old>) { my ($f1, $f2, $f3, $email, $f4, $f5, $f6, $f7,$f8) = split /;/; $lines{$email} = 1; } hors seul le champ $email t'intéresse alors ne garde que celui-ci my %lines; foreach (<$old>) { my $email = (split /;/)[3]; $lines{$email} = 1; } et là on se rend compte que lines ne contient pas des lignes mais une paire pour chaque ligne avec une adresse email en clef et 1 comme valeur unique ( $email => 1 ). du coup on peut écrire my %found_email = map { (split /;/)[3] => 1 } <$old>; de meme on filtrera ton 2eme fichier presque de la meme manière map {print if $found_email{ (split /;/)[3] } <$new>; marc