我有一个包含类似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内容时我什么都没有......有什么建议吗?
答案 0 :(得分:4)
您需要将拆分的结果捕获到数组本身。请注意下面的附加括号。这会将结果捕获到一个数组中,并将数组引用赋给$arr2D[$i]
,从而为您提供所需的二维数组。
foreach my $elem (@array)
{
$arr2D[$i] = [ split( /,/, $elem ) ];
$i++;
}
此外,您可能希望避免使用$a
,因为perl会在太多的上下文中特别对待它。请注意,我将其名称更改为上面的$elem
。
从风格上讲,您可以通过将其重写为$i
来消除map
和循环:
@arr2D = map { [ split /,/ ] } @array;
这应该有效,而且更简洁。