{
my $warning;
local $SIG{__WARN__} = sub { $warning = shift; };
Module::do_something($param, $param1);
like ($warning, qr/ignoring/, 'param 1 isn't an href, ignored');
}
####
sub blah {
my %params = @_;
...
}
####
my $farm = blah(moo => $href, meow => "Phoebe's smelly cat");
####
sub valid_params {
my %valid = (
moo => 1,
woof => 1,
meow => 1,
);
return %valid;
}
sub _validate_params {
my %p = @_;
my %valid = valid_params();
for (keys %p){
die "$_ isn't a valid param" if ! exists $valid{$_};
}
if (exists $p{moo} && ref $p{moo} ne 'HASH'){
die "param 'moo' must be a hash reference";
}
}
####
sub yell {
my %p = @_;
_validate_params(%p);
...
}