1

我有一个包含看起来像这样的字符串的数组,s1,s2,.. 我需要在“,”上拆分,并将字符串放在另一个二维数组中,这是我的代码

 @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

1 回答 1

4

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

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

此外,您可能希望避免使用$a,因为 perl 在太多情况下会特别对待它。注意我把它的名字改成了$elem上面。

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

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

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

于 2013-07-01T17:25:57.603 回答