perl将数组元素拆分为另一个2D数组错误

时间:2013-07-01 17:18:07

标签: regex arrays perl multidimensional-array

我有一个包含类似s1,s2,..的字符串的数组 我需要拆分“,”并将字符串放在另一个2D数组中 这是我的代码

 @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内容时我什么都没有......有什么建议吗?

1 个答案:

答案 0 :(得分:4)

您需要将拆分的结果捕获到数组本身。请注意下面的附加括号。这会将结果捕获到一个数组中,并将数组引用赋给$arr2D[$i],从而为您提供所需的二维数组。

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

此外,您可能希望避免使用$a,因为perl会在太多的上下文中特别对待它。请注意,我将其名称更改为上面的$elem

从风格上讲,您可以通过将其重写为$i来消除map和循环:

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

这应该有效,而且更简洁。