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