【发布时间】:2011-04-19 07:19:06
【问题描述】:
$ cat flaglist.log
flag1
flag2
flag3
flag4
$
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
$
所有四个标志都是设置的环境变量的名称(我在 shell 中使用echo $flag1 检查)。
这里的 if 条件总是返回 false。如果我写$ENV{flag1},结果为真,func() 会按我的预期调用。
我在 if 语句中做错了什么?
【问题讨论】:
-
您的意思可能是
if( exists $ENV{$_} )。如果您将环境变量设置为0,您当前的测试将失败。
标签: perl environment-variables perl-io