以下に示すように、コードを含むスカラーを「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!
}
}
最初の質問は、なぜ最初の条件がループでスタックしたのか、2番目の質問はどうすれば修正できるのかということです。ヘルプ/アドバイス/ソリューションを本当にいただければ幸いです。:)