我试图理解Perl中的引用/解除引用系统。
我要做的是使用引用删除元素:
my $ref= \@{$collection{$_[0]}};
# delete($$ref[$i]); # delete works, I've tested that already
splice($$ref, $i, 1); # this wouldn't do.
我首先尝试了delete()子程序,它的工作原理;但是,在删除的元素向前移1后,它不会将索引移位,因此我无法继续处理其他内容。
然后我用Googled找到了splice()子程序,它一次性删除和移位。
但错误反馈告诉我
“拼接的arg 1的类型必须是数组(不是标量取消引用)......”
然后我尝试了这样的事情:
splice(@{$$ref}, $i, 1);
这导致了另一个错误:
“不是...的SCALAR参考(指向该行)”
所以我有点疑惑,我怎么能处理这个问题?
如果可能,我不想在解决方案中使用任何CPAN或其他库。
答案 0 :(得分:2)
splice(@$ref, $i, 1); # this works...
啊......我昨晚(凌晨2点)遇到了这个问题,所以我的能量被烧掉了......
现在我更清楚地看到了Perl中的魔力:)
对这么简单的问题感到抱歉。