在我的代码我有一个多维数组
$rows[$x][$y]
我将它传递给一个子功能,具有多种用途,但在某些时候该功能将需要删除(POP)从主数组中的元素之一。
我相信通过它是由引用它,因为我传递的不仅仅是阵列更正确的方法:
filterout(\@rows, $y, $data );
但我不能确定的语法来提领它的子程序侧。
希望得到任何帮助,感谢一如既往。
它的裁判指向指向标量的阵列阵列裁判的阵列的阵列。所以你需要一个单一的元素,一个用于列,没有对连续两次解引用:
sub filterout(\@$$) {
my($array_ref, $y, $data) = @_;
# single element <row>,<col>
$array_ref->[ <row >]->[ <column> ] = ...;
# pop column of <row>
pop(@{ $array_ref->[ <row> ] });
# pop row
pop(@{ $array_ref });
}
filterout(@rows, $y, $data);
需要注意的原型,这使得filterout()
像push()
工作。
从阵列参考pop,使用
my $last = pop @$aref;
或者说,在最近的Perl版本,
my $last = pop $aref->@*;
为了弹出内阵列时,需要解除引用数组引用的给定元素:
my $last = pop @{ $aref->[$index] };
要么
my $last = pop $aref->[$index]->@*;