正如您在下面看到的,是一个错误的'eval'实践,它是一个包含代码的标量。除此之外,在下面的代码中,条件'$ condition {'b'} {'1'}'没有在循环中运行。只有数组中第一个出现的条件才会运行,即。条件'$ condition {'a'} {'1'}',运行。通过循环遍历一个数组形成多个if语句
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!
}
}
第一个问题是为什么第一个条件卡在循环中,第二个问题是我该如何解决它?非常感谢任何帮助/建议/解决方案。 :)
答案主要取决于“..”是什么。 – Sean 2012-08-15 22:23:11
这个问题给人的印象是在http://stackoverflow.com/q/11976045/716443的所有答案之后没有任何进展。但是,您应该测试'$ @'来查看'eval'是否产生错误。否则,你的问题存在于{{}}内包含的不可见代码中。然后返回并使用不需要评估字符串作为代码的解决方案之一。 – DavidO 2012-08-15 22:26:02
stackoverflow.com/q/11976045/716443确实有助于获取数组中第一个元素的工作条件,但之后就陷入了困境。 – bioinformant 2012-08-15 22:41:20