Looking at this bugs me.
Manipulating your input arguments this way works, but the
side-effects can surprise and amaze. I would not do this
My overall feeling is that if you feel the need to rotate
your data, you should have an array rather than a list of
variables. Then you could
push @array, shift @array;
much faster, without resorting to nasty side-effects.
Generally when I see myself wanting to resort to "bad"
techniques like side-effects, I take that as a danger sign
and go looking for a more fundamental mistake in my code...