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