我有一個陣列參考,我想對陣列的最后兩個元素進行切片。我發現使用-2..-1會起作用。我正在使用以下語法:
subroutine($var->[-2..-1]);
這給了我以下錯誤:
Use of uninitialized value $. in range (or flip)
Argument "" isn't numeric in array element
我把這條線改成了這樣,那行得通:
subroutine(@$var[-2..-1]);
我不明白為什么第二種方法有效而第一種方法無效。我認為使用陣列運算子與使用@. 背景關系是否與箭頭運算子不明確?
uj5u.com熱心網友回復:
->是解參考運算子。$aref->[$i]is to a $aref like $arr[$i]is to @arr。要從陣列中獲取切片,您需要更改 sigil: @arr[$i, $j]。取消參考類似,但不是更改印記,而是首先取消參考參考,然后對其進行切片:
@{ $aref }[$i, $j]
可以縮短為@$aref[$i, $j].
所以->運算子只能用于陣列和散列參考的單個值。你需要@{}切片。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/483404.html
下一篇:匹配Perl字串中的美元符號
