Hm, I think I see now what you mean. You can access $_2 in that line I posted but not after that line was processed.
AFAIK, perl replaces all variables first (like $_2) and then processes the commands (like shift). That would result in:
First $_2 was replaced with it's value (3 or 5 or whatever), and then perl uses the shift command and there is no $_2 no more..
Maybe that helps!?