我有一个嵌套的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将是正确的解决方案,无论如何