use Data::Dumper; sub send_2 { my %args = (name => 'default', filehandle => 'default', id => 'default', %{ +shift } ); print Dumper \%args; } send_2( {name => 'Tom', id => 'IT001'} ); send_2( {name => 'Mary', filehandle => 'ARGV', id => 'foo'} );