in reply to Too many arguments for subroutine

See perldiag.

Perl can give you more information on its warnings and exceptions if you let it:

#!perl use strict; use warnings; use diagnostics; sub manual_error() { }
Too many arguments for main::manual_error at tmp.pl line 9, near ""hi" +)" Execution of tmp.pl aborted due to compilation errors (#1) (F) The function requires fewer arguments than you specified. Uncaught exception from user code: Too many arguments for main::manual_error at tmp.pl line 9, ne +ar ""hi")" Execution of tmp.pl aborted due to compilation errors.

And yes, this has to do with specifying a prototype (or subroutine signature) and then using a different number of parameters.