2013-07-01 53 views
1

我有一個包含字符串數組看起來像這樣s1,s2,.. 我需要分割的「」並有串在另一個二維數組 這是我的代碼perl的分裂數組的元素到另一個二維數組錯誤

@arr2D; 
    $i=0; 
    foreach $a (@array){ 
    $arr2D[$i]= split (/,/,$a); 
    $i++; 
    } 
//print arr2D content 
    for ($j=0;$j<scalar @arr;$j++){ 
    print $arr2D[$j][0].$arr2D[$j][1]."\n"; 
    } 

問題是當試圖打印arr2D內容我什麼也沒有......任何建議?

回答

4

您需要將分割結果捕獲到數組本身。注意下面的附加括號。這將結果捕獲到一個數組中,並將數組引用指定給$arr2D[$i],從而爲您提供所需的2-D數組。

foreach my $elem (@array) 
{ 
    $arr2D[$i] = [ split(/,/, $elem) ]; 
    $i++; 
} 

而且,你可能要避免使用$a,因爲Perl在太多的環境特別對待它。注意我將其名稱更改爲上面的$elem

風格上,你可以通過重寫這是一個map消除$i和循環:

@arr2D = map { [ split /,/ ] } @array; 

這應該工作,它更簡潔。

+2

'push @ arr2D,[split(/,/,$ elem)];'將不需要'$ i' –

+0

獵人:是的,如果@ arr2D在開始時是空的。我不清楚這是否是。 –