0
我有一个嵌套for循环,我只想在for循环内打印一条语句。如果您看到第4条if语句“if(@arrayTB [$ num] ne @arraynew [$ num1])”,则它会输出比所需更多的次数。我正在写一个CSV文件,因为我的主管在工作中告诉我不要这样做,所以我不能使用CSV模块来做到这一点。我想循环比较文件中所有可能的目标分支(TB),如果找不到,则打印3个空格。现在它每次打印3个空格进行比较。任何关于如何解决这个问题的建议?只需要在for循环内打印语句一次 - Perl
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循环之前。我尝试了你的建议,它只打印一个空格,如果数组中的第一个元素不匹配,那么它会打印与一行中的其他数组相匹配的所有内容。我想打印一个数组中元素不匹配的空间。 – Abhishek 2015-02-05 14:55:33
@ Abhishek:对不起,我不完全明白,你的意思。有条件的话,你在那里比赛吗?那么'print'输出什么东西?输出是否正确?顺便说一句,你不应该使用@ -sigil数组项,这需要一个数组的切片,并在大多数情况下是错误的 – 2015-02-05 15:04:05
是的,我确实得到匹配的第一个元素在这个if语句“if(@arrayTB [$ num] ne @arraynew [$ num1])“,它会根据需要打印空白空间,但在第一个元素之后,即使元素不相等,它也不会打印空白空间。如果条件为“if(@arraybaseline [$ num1] eq”null“)”和“if(@arraybaseline [$ num1] ne”null“)” – Abhishek 2015-02-05 15:11:23