use 5.010; sub send_3{ my ($h) = @_; # 'fix' if broken parameters unless(ref($h) eq 'HASH'){ my %X = @_; $h = \%X; } # set default values $h->{foo} //='default'; # iterate over parameters for my $key (keys %$h){ say "$key ~> $h->{$key}" } } send_3( {"foo"=>42, "bar"=>'code'}); send_3( "baz"=>11, "zab"=>'dong'); #### fbrm@monastery:~/CODE/PERL/monks$ perl x foo ~> 42 bar ~> code zab ~> dong foo ~> default baz ~> 11