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

时间:2015-02-05 14:25:04

标签: perl csv for-loop

我有一个嵌套的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|,"",""|;
                                    }
                         }

                    }

1 个答案:

答案 0 :(得分:2)

如果我理解正确,在您进入此特定周期之前,您的$counter设置为零/未定义?然后你就可以实现它:

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

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