Prototypes in Perl are very special. They are not --as many people expect-- a tool to check at compile-time or even run-time wether the parameters of your subroutine call are correct. Have a look at
Gratuitous use of Perl Prototypes, it explains clearly why Perl "prototypes" are totally different from (for example) C "prototypes".
CountZero
A program should be light and agile, its subroutines connected like a string of pearls. The spirit and intent of the program should be retained throughout. There should be neither too little or too much, neither needless loops nor useless variables, neither lack of structure nor overwhelming rigidity." - The Tao of Programming, 4.1 - Geoffrey James