$ cat flaglist.log
flag1
flag2
flag3
flag4
$
code PerlComment accéder correctement aux variables d'environnement dans Perl?
my $infile = "flaglist.log";
open my $fpi, '<', $infile or die "$!";
while (<$fpi>) {
chomp;
if ($ENV{$_}) { # something wrong here
func($_);
}
else {
print "oops\n";
}
}
$ perl code.pl
oops
oops
oops
oops
$
Tous les quatre drapeaux sont des noms de variables d'environnement définies (j'ai vérifié à l'aide echo $flag1
de la coquille).
Ici, la condition if renvoie toujours false. Si j'écris $ENV{flag1}
, il en résulte à vrai et func()
est appelé comme je m'y attendais. Qu'est-ce que je fais de mal à l'instruction if?
Vous pouvez indiquer 'if (existe $ ENV {$ _})'. Votre test actuel échouera si vous avez une variable d'environnement définie sur '0'. – daotoad