2013-07-01 73 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在开始时是空的。我不清楚这是否是。 –

相关问题