in reply to Omitted subroutine arguments

My customary strategy, in cases where there are a variable number of arguments, is to pass a single hashref, instead.   I have a standard subroutine which is given the argument-list, the subroutine name, and a list(ref) of expected parameters.   If any of the key-names in the list are not in the argument hashref, it confesses.   (see Carp)

About the only thing I can say about “long parameter lists” is that you get ’em wrong, and you can’t easily see what you did.   That leads to a lot of silly-bug debugging time.   (a.k.a. “whack-a-head” doh!-bugging, which I thoroughly despise.)