在Perl中取消引用多维数组的正确方法是什么?

Dan*_*lan 0 perl multidimensional-array

在我的代码中,我有一个多维数组

       $rows[$x][$y]
Run Code Online (Sandbox Code Playgroud)

我将它传递给具有多种用途的子函数,但在某些时候,该函数将需要从主数组中删除(弹出)其中一个元素.

我相信传递它的正确方法是引用它,因为我传递的不仅仅是数组:

        filterout(\@rows, $y, $data );
Run Code Online (Sandbox Code Playgroud)

但我不确定在子程序端解除引用它的语法.

非常感谢任何帮助,谢谢.

cho*_*oba 7

要从数组引用弹出,请使用

my $last = pop @$aref;
Run Code Online (Sandbox Code Playgroud)

或者,在最近的Perl版本中,

my $last = pop $aref->@*;
Run Code Online (Sandbox Code Playgroud)

要弹出内部数组,您需要取消引用数组引用的给定元素:

my $last = pop @{ $aref->[$index] };
Run Code Online (Sandbox Code Playgroud)

要么

my $last = pop $aref->[$index]->@*;
Run Code Online (Sandbox Code Playgroud)