while ( ($x) = shift @a ) { ... } #### DB<170> @a=1..2 => (1, 2) DB<171> ( ($x) = shift @a ) ? $x : "false" => 1 DB<172> ( ($x) = shift @a ) ? $x : "false" => 2 DB<173> ( ($x) = shift @a ) ? $x : "false" => undef # true! #### DB<174> @a=1..2 => (1, 2) DB<175> ( ($x) = splice @a,0,1 ) ? "$x" : "false" => 1 DB<176> ( ($x) = splice @a,0,1 ) ? "$x" : "false" => 2 DB<177> ( ($x) = splice @a,0,1 ) ? "$x" : "false" => "false" #### The following equivalences hold (assuming "$[ == 0 and $#a >= $i" ) ... shift(@a) splice(@a,0,1)