2011-08-29 241 views
-3

我有兩個陣列,我正在使用list::compare模塊。第一個數組是陣列比較

@log, "$each_line[3]|$each_line[14]" 

第二個數組是

@log2 "$each_line2[3]|$each_line2[14]|$each_line2[37]" 

有沒有什麼辦法讓這些陣列匹配,並打印呢?

"$each_line[3]|$each_line[14]|$each_line2[37]" 
+3

是什麼名單::比較有你的問題做。那些管道分離的字符串應該是數組中的單個示例元素嗎?數組是否分類? @ log2中的元素總是與@ log1中的元素匹配? – ysth

+0

如果您可以顯示完整的示例輸入(將內容分配給@log和@log2的代碼)以及您的預期輸出,那將非常有用。 – ysth

+0

「@ each_line」是另一個數組,「@ log」和「@ log2」是否包含對其元素的引用? – TLP

回答

0

由於您沒有說匹配是如何完成的,因此該示例似乎基本上是對應數組元素的「或」。

這樣

my @array1 = split(/\|/, $string1); 
my @array2 = split(/\|/, $string2); 
my $length1 = scalar(@array1); 
my $length2 = scalar(@array2); 
my @new =(); 
my $max = $length1 < $length2 ? $length2 : $length1; 
for (my $index = 0; $index < $max; $index++) { 
    push @new, $index < $length1 ? $array1[$index] : $array2[$index]; 
}