0
$ 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
$

4つのフラグはすべて、設定されている環境変数の名前です(echo $flag1シェルから使用して確認しました)。

ここで、if条件は常にfalseを返します。と書く$ENV{flag1}と、結果はtrueになり、func()期待どおりに呼び出されます。

ifステートメントで何が間違っていますか?

4

1 に答える 1

4

コードは私のために働くようです。入力行から空白を取り除いてみてください:

while (<$fpi>) {
    s/\s+//g;
    # ...
}
于 2010-09-30T11:24:54.960 に答える