>perl -wMstrict -le
"print send_values({name => 'Joe Doe', addr => '123 4th St.'});
print send_values({
addr => '666 Mobil Ave.', phone => '321-432-5432'
});
print send_values({
name => 'Moe Foe', addr => '7 6th Rd.', phone => '432-543-6543'
});
;;
sub send_values {
my ($hr_args) = @_;
;;
my %defaults = (
name => undef, addr => undef, phone => '(not given)',
);
;;
my %args = (%defaults, %$hr_args);
my @bad = grep !defined($args{$_}), keys %args;
return undef
if @bad and warn((caller 0)[3], qq{: bad arg(s): @bad});
;;
return
sprintf qq{
%s
}, @args{ qw(name addr phone) }; } "(not given)
main::send_values: bad arg(s): name at -e line 1. Use of uninitialized value in print at -e line 1.432-543-6543