2
我想了解Perl中的引用/取消引用系统。Perl:在splice()中,arg1的类型必须是数组,不能是标量解引用。怎么修?
我所试图做的是通过引用删除元素:
my $ref= \@{$collection{$_[0]}};
# delete($$ref[$i]); # delete works, I've tested that already
splice($$ref, $i, 1); # this wouldn't do.
我第一次尝试删除()子程序,它的工作原理;然而,它并没有将被移除的元素向前移动1,所以我不能继续在其他东西上工作。
然后我Google搜索并找到了splice()子程序,它一次删除并移动。
但错误的反馈告诉我,
“ARG 1至拼接类型必须是阵列(未标量解引用)......”
我又试图这样的事情:
splice(@{$$ref}, $i, 1);
这导致了这样的另一个错误:
“不是在一个标量引用...(在该行指出)”所以我有点困惑,我怎么处理这个问题?
如果可能的话,我更喜欢不使用任何CPAN或额外的解决方案库。
'@ {$ ref}'也可以工作。 '@ $ ref'更常见,但如果你有一个更复杂的表达式(而不是一个变量),你需要大括号。 – cjm 2010-05-30 07:57:54
是的,请参阅http://perlmonks.org/?node=References+quick+reference – ysth 2010-05-30 22:15:15