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 of a subroutine and also within the lexical scopes
established by the eval STRING
, BEGIN {}
, INIT {}
, CHECK {}
,
UNITCHECK {}
 and END {}
 constructs.
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.