I'm just going to link to this node of mine that I think explains how all of these operators work.
In reality, I never use shift or unshift; I use push lots, and pop only occasionally. The only time I see shift used is at the top of a sub (my $foo = shift), and that's a code pattern that I dislike. I much prefer the pattern
my ( $this, $that, $other ) = @_;
over three successive
shift statements. Just about any time you're doing a cut and paste in your code, alarm bells should be going off that ask -- "Is this really the correct thing to be doing?"
Alex / talexb / Toronto
Thanks PJ. We owe you so much. Groklaw -- RIP -- 2003 to 2013.