我有一个硬编码的if循环,如下所示:

my $tp = 0;
my $fp = 0;
if (   $myhash{$pred}
        || $myhash{$pred1}
        || $myhash{$pred2}
        || $myhash{$pred3}
        || $myhash{$pred4}
        || $myhash{$pred5}
        || $myhash{$pred6} )
    {
        $tp++;
    }
    else {
        $fp++;
    }

如何在for循环中做到这一点?

我尝试了以下操作,但总的fptp给出了不同的结果:
my $tp=0;
my $fp=0;

my @allpreds = ($pred,$pred1,$pred2,$pred3,$pred4,$pred5);

foreach my $allpred ( @allpreds ) {
        if ( $myhash{$allpred} ) {
            $tp++;

        }

    }
if ( !myhash{$pred} ) {
        $fp++;
    }

最佳答案

my $tp=0;
my $fp=0;
my $count=0;

my @allpreds = ($pred,$pred1,$pred2,$pred3,$pred4,$pred5);

foreach my $allpred ( @allpreds ) {
        if ( $myhash{$allpred} ) {
            $count++;

        }

    }

if ($count>0) { $tp=1; } else { $fp=1; }

关于linux - 如何重写此多重或条件,以便它使用Perl “for”循环?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5643458/

10-09 20:02