数组引用的Perl列表



我有一个数组引用列表: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未定义)

最新更新