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'} ); #### $VAR1 = { 'filehandle' => 'default', 'name' => 'Tom', 'id' => 'IT001' }; $VAR1 = { 'filehandle' => 'ARGV', 'name' => 'Mary', 'id' => 'foo' };