##
sub abc {
# set up defaults
my %param = (
apples => 'green',
banana => 'yellow',
);
# now override with any passed params
%param = @_;
for my $required qw( banana nut ) {
die "missing: $required" unless defined $param{$required};
}
# etc
}
####
my %passed = @_;
(@param{ keys %passed }) = values %passed;