只需要在for循环中打印一次语句-Perl



我有一个嵌套的for循环,我只想在for循环中打印一次语句。如果您看到第4个If语句"If(@arrayTB[$num]ne@arraynew[$num1])",它会打印超出要求的次数。我正在写入CSV文件,我不能使用CSV模块来执行此操作,因为我的主管告诉我不要这样做。我希望循环比较文件中所有可能的目标分支(TB),如果找不到,则打印3个空格。现在,它每次进行比较时都会打印3个空格。关于如何解决这个问题,有什么建议吗?

                 for (my $num = 0; $num <= $lengthTB; $num = $num + 2)      
                    {
                        for (my $num1 = 0; $num1 <= $lengthTBresult; $num1++) 
                        {       
                                if(@arrayTB[$num] eq @arrayTBresult[$num1])
                                {
                                    if (@arraybaseline[$num1] eq "null")
                                        {
                                            print OutFile  qq|,@arrayCPnew[$num1],@status[1]|;
                                        }
                                    if (@arraybaseline[$num1] ne "null")
                                        {
                                            print OutFile  qq|,@arrayCPnew[$num1],@status[0]|;
                                        }
                                }
                                if (@arrayTB[$num] ne @arraynew[$num1])                                                                             #if(exists $noTBs{$num})
                                    {
                                        $counter++;
                                        print OutFile qq|,"",""|;
                                    }
                         }
                    }

如果我理解正确,在您进入这个特定的for循环之前,您的$counter设置为零/未定义?然后你可以这样实现:

print OutFile qq|,"",""| unless $counter;
$counter++;

我不知道你老板的理由,但使用正确的模块解析CSV将是正确的解决方案,无论如何

最新更新