I think I'm about to lose my newly earned 'monk' status with this post, but here goes anyway.
in reply to When to use Prototypes?
I use prototypes for any sub I write that does not take a scalar(s) as args. I do this for 2 reasons:
First, it helps for readability of larger scripts, and just by looking at my sub prototypes at the top I know what to pass it.Second, for maintainability, when I look at stuff I wrote months ago I can see exactly what I'm passing and how to reuse that sub easily.
Now this could also be because I write too much C, and like to see what is being passed around at a glance, personally, prototyping helps. Being able to pass an array ref (like you have to) in the same way I would (logically) pass an array (like I would want to) is also more readable for me.
"Nothing is sure but death and taxes" I say combine the two and its death to all taxes!