linux - 如何重写这个多重 OR 条件,以便它使用 Perl "for"循环?

标签 linux perl unix loops for-loop

我有一个硬编码的 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 - 如何重写这个多重 OR 条件,以便它使用 Perl "for"循环?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5643458/

相关文章:

javascript - 替换 linux tail -f 命令中的换行符

linux - Bash Linux 如何创建 stderr、stdout 和组合日志文件

mysql - linux下不安装可以运行 "mysqld"吗?

Perl - 如果字符串为空则使用 0

linux - 如何在字符串之前将分配给变量的文本插入到文件中

c - 获取 GCC 错误 : "sys/memfd.h: No such file or directory"

perl - 我们可以加载没有 ".pm"文件扩展名或其他文件扩展名的 perl 模块吗?

arrays - 如果有一个(Perl),在满足特定条件的数组中查找项目?

linux - 使用unix脚本发布一条一条地显示和删除记录

unix - 从管道分隔文件中的字符串中删除不匹配的值