正如您将在下面看到的那样,'eval'是一个包含代码的标量的错误perl实践。除此之外,在下面的代码中,条件'$ condition {'b'} {'1'}'没有通过循环运行。只有数组中出现的条件才会运行,即。条件'$ condition {'a'} {'1'}',已运行。
my @parameter=('a','b');
my %condition;
$condition{'a'}{'1'}='$degree>=5';
$condition{'b'}{'1'}='$number>5';
foreach (@parameter) {
my $count=0;
foreach (<INPUT>) {
my $degree=....; #$degree defined
my $number=.....; #$number defined
if (eval $condition{$_}{'1'}) {$count++} #only $condition{'a'}{'1'} was run!
}
}
第一个问题是为什么第一个条件卡在循环中,第二个问题是我如何解决它?非常感谢任何帮助/建议/解决方案。 :)
答案 0 :(得分:1)
foreach (@parameter)
循环运行'a'
的正文。在该循环中,foreach (<INPUT>)
循环将输入消耗到其末尾。
然后foreach (@parameter)
循环运行'b'
的正文。在该循环中,foreach (<INPUT>)
循环没有输入,因为它已被使用。