如何在Perl中正确访问环境变量?

时间:2010-09-30 11:16:32

标签: perl environment-variables perl-io

$ 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},结果为true,func()按照我的预期调用。

我在if语句中做错了什么?

1 个答案:

答案 0 :(得分:4)

代码似乎对我有用。尝试从输入行中删除任何空格:

while (<$fpi>) {
    s/\s+//g;
    # ...
}