Как правильно получить доступ к переменным среды в Perl? - PullRequest
0 голосов
/ 30 сентября 2010
$ 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
$

Все четыре флага являются именами переменных среды, которые установлены (я проверил, используя echo $flag1 из оболочки).

Здесь условие if всегда возвращает false. Если я напишу $ENV{flag1}, это приведет к истине, и func() будет вызван, как я и ожидал.

Что я делаю неправильно в операторе if?

1 Ответ

4 голосов
/ 30 сентября 2010

Код, кажется, работает для меня. Попробуйте удалить любые пробелы из строк ввода:

while (<$fpi>) {
    s/\s+//g;
    # ...
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...