Perl: Named parameters validation best practice
问题 I am using named parameters in class method calls and was wondering if there is a best practice to make sure no unknown parameters are passed. Here's what I am doing sub classmethod { my $self = shift; my %args = ( "param1" => "default1", "param2" => "default2", @_ ) if (my @invalid = grep { !/^(param1|param2)$/ } keys %args) { croak "received unknown arg(s) ".join(",", @invalid)." from ".caller(); } } Is that a proper way to go forward, or could this cause a performance problem? Best, Marcus