in reply to Perl Module

Prototypes in Perl do not do the same thing as prototypes in C/C++ (mind you, that's an area that is mis-understood as well). In Perl they force the context of the arguments, not the number and type. This is the core of most misunderstandings about prototypes.

Report takes one or two scalars
Is better written as Report takes one or two arguments in scalar context

Personally I find them useful for reference arguments, for example mysub(\@\%). This will generate a compile-time error if the wrong type is passed. Otherwise you have to use ref to check, and the best you can do is report a run-time error.

Their main drawback is that they are so easily circumvented, for example using OO method calls, or prefixing the call with &.

Finally, for the OP, despite all the bad news about prototypes, if it ain't broke don't fix it. Please don't remove the prototype from the module! Just don't use them without a damn good reason.