in reply to pop and shift not reversible
my @q = ( 1,2,0,4 ); $first = pop @q; print "q $#q pop ",$first,"->"; while ($#q+1) { $next = pop @q ; print ",",$next }; ---- Gives q 2 pop 4->,0,2,1 [download]
while( @array ) { my $next = shift @array; } [download]