正如您将在下面看到的那样,“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!
}
}
第一个问题是为什么第一个条件会卡在循环中,第二个问题是如何修复它?非常感谢任何帮助/建议/解决方案。:)