我有一个数组引用列表:my @a = ([1,2],[3,4])
如何获得名为"@b"的数组,其中第一个数组位于@a((1,2)
)中?我尝试过各种取消引用的组合,但它们似乎都会出错。
取消引用@a
数组中的第一个元素,
my @b = @{ $a[0] };
请注意,@b
数组是一个副本,最终的更改不会反映在@{$a[0]}
上
@a
实际上包含上面的两个元素——都是对子数组的引用。它可能看起来像4个元素,但事实并非如此。
所以你可以做:
my ( $ref1, $ref2 ) = @a;
然后取消引用$ref1
:
@b = @{ $ref1 };
但我相信你已经发现了——你不需要称它为$ref1
,因为它也是$a[0]
。因此:
@b = @{$a[0]};
注意——你需要大括号——@$a[0]
实际上是(@$a)[0]
,这不是你想要的。(由于$a
未定义)