移除並傳回陣列的第一個元素。這會將陣列縮短一個,並將所有元素向下移動。
my @arr = ('cat', 'dog');
my $item = shift(@arr); # 'cat'
# @arr is now ('dog');
如果陣列為空,則傳回 undef
。
注意:如果陣列中的第一個元素為 undef
,shift
也可能傳回 undef
。
my @arr = (undef, 'two', 'three');
my $item = shift(@arr); # undef
如果省略 ARRAY,則 shift
會在主程式中對 @ARGV
陣列執行操作,而在子常式中對 @_
陣列執行操作。shift
會在 eval STRING
、BEGIN {}
、INIT {}
、CHECK {}
區塊中對 @ARGV
陣列執行操作。
從 Perl 5.14 開始,一個實驗功能允許 shift
採用一個純量表達式。此實驗已被視為不成功,並已於 Perl 5.24 中移除。
另請參閱 unshift
、push
和 pop
。shift
和 unshift
對陣列左端執行與 pop
和 push
對右端執行的相同操作。