In Perl 5, explicit function prototypes are discouraged.  They have well-known problems and don't really do what they are supposed to :)  They are intended to make functions that behave like the built-in functions, so e.g. you can write something that behaves like `push` or `pop`.  Using them to ensure the number of parameters tends to be awkward; if we need that kind of strictness I would use an OOP approach instead.

http://perldoc.perl.org/perlsub.html#Prototypes

(In Design Center we use the http://search.cpan.org/~carlos/Mo-0.38/lib/Mo.pod framework.  Mo is a micro version of Moo, which is a micro version of Moose.  This is why programmers don't get comedy gigs.)