in reply to Poor Man's Prototyping?

Well, prototyping implies type-checking as well, and you're not really doing that. (In other words, you're not specifying whether you're expecting a scalar, an array, a reference to something, etc.) You've really implemented a way of naming arguments, which is relatively common. Probably the best-known example is the module.

A search of the monastery for "named sub arguments" turns up tons of information. Try a few of these:

And a couple hundred more...