我有一个嵌套的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|,"",""|;
}
}
}
答案 0 :(得分:2)
如果我理解正确,在您进入此特定周期之前,您的$counter
设置为零/未定义?然后你就可以实现它:
print OutFile qq|,"",""| unless $counter;
$counter++;
我不知道你老板的推理,但使用正确的模块解析CSV将是正确的解决方案,无论如何