&foo (bar=>"1"); sub foo { %args=@_; %defaults=(foo=>9, bar=>8, baz=>7); foreach ("foo", "bar", "baz") { defined ($args{$_}) || {$args{$_}= $defaults{$_}} ; print $args {$_} } } #### &foo (bar=>"1"); sub foo { %args=@_; %defaults=(foo=>9, bar=>8, baz=>7); foreach (keys %defaults) { defined ($args{$_}) || {$args{$_}= $defaults{$_}} ; print $_ ," - ",$args {$_},"\n"; } }