[Perl] Erreur avec « exists » à moins que...

Philippe Delavalade philippe.delavalade at orange.fr
Mer 23 Mar 10:43:41 CET 2016


Bonjour.

Je donne ci-dessous une « simplification simpliste » d'un problème que je
rencontre avec un script plus long et compliqué.

Je charge les lignes d'un premier fichier dans un tableau ; puis je fais un
peu pareil avec un autre fichier dont je charge les lignes dans une
variable associative. Je veux ensuite savoir si des lignes du premier
fichier sont déjà dans le second mais j'ai toujours une réponse négative
même avec l'exemple ci-joint dans lequel les deux fichiers sont identiques.

La méthode peut sembler très compliquée dans l'exemple minimal ci-joint
mais ça ne semble pas idiot dans mon cas réel et j'ai construit cet
exemple en restant au plus près du script initial.

Si quelqu'un pouvait me montrer mon erreur, je lui en serais très
reconnaissant.

----------------------------------------
#!/usr/bin/perl -w

use Modern::Perl;

my $src;
my @t1;
my @t2;
my %lst;

open( $src, "<", "$ARGV[0]" ) || die;
$/ = undef;
my $t = <$src>;
chomp($t);
@t1=split(/\n/,$t);
close $src;

open( $src, "<", "$ARGV[0]") || die;
while (my $l = <$src>) {
  chomp($l);
  $lst{$l}=1;
}
close $src;

my $i=0;
while (defined($t1[$i]) ) {
  push(@t2,$t1[$i]);
  (exists $lst{$t2[$#t2]}) || die "$t2[$#t2] introuvable dans $ARGV[0]";
}

exit 0;
----------------------------------------

Merci d'avance.

-- 
Ph. Delavalade


Plus d'informations sur la liste de diffusion Perl