in reply to Best CPAN library for named subroutine arguments/parameters

The overhead introduced by most of these modules is quite significant as they make several subroutine calls for every argument processed under the hood. That may be admissible or not for your particular case.

This is my preferred way of handling named parameters:

sub foo { my ($self, %opts) = @_; my $foo = delete $opts{foo} // 'default_foo'; my $bar = delete $opts{bar} // croak "required parameter bar missing +"; ... %opts and croak_bad_args(\%opts); ... }

It requires some more coding but is cheap.