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

Regex perl将数组元素拆分为另一个2D数组错误,regex,arrays,perl,multidimensional-array,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[$

我有一个数组,其中包含如下所示的字符串
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;
$i=0;
foreach$a(@array){
$arr2D[$i]=拆分(/,/,$a);
$i++;
}
//打印二维内容

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

foreach my $elem (@array)
{
    $arr2D[$i] = [ split( /,/, $elem ) ];
    $i++;
}
另外,您可能希望避免使用
$a
,因为perl在太多上下文中特别处理它

在风格上,您可以通过将其重写为
映射来消除
$i
和循环:

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

这应该是可行的,而且要简洁得多。

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

foreach my $elem (@array)
{
    $arr2D[$i] = [ split( /,/, $elem ) ];
    $i++;
}
另外,您可能希望避免使用
$a
,因为perl在太多上下文中特别处理它

在风格上,您可以通过将其重写为
映射来消除
$i
和循环:

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

这应该行得通,而且要简洁得多。

push@arr2D[split(/,/,$elem)];
将不再需要
$i
Hunter:是的,如果@arr2D一开始是空的。我不清楚它是否是空的。
push@arr2D[split(/,/,$elem)];
将不再需要
$i
亨特:是的,如果@arr2D一开始是空的。我不清楚它是否是空的。