Shifts the first value of the array off and returns it, shortening the array by 1 and moving everything down. If there are no elements in the array, returns the undefined value. If ARRAY is omitted, shifts the @_
array within the lexical scope of subroutines and formats, and the @ARGV
array outside a subroutine and also within the lexical scopes established by the eval STRING
, BEGIN {}
, INIT {}
, CHECK {}
, UNITCHECK {}
, and END {}
constructs.
Starting with Perl 5.14, shift
can take a scalar EXPR, which must hold a reference to an unblessed array. The argument will be dereferenced automatically. This aspect of shift
is considered highly experimental. The exact behaviour may change in a future version of Perl.
See also unshift
, push
, and pop
. shift
and unshift
do the same thing to the left end of an array that pop
and push
do to the right end.