use strict; use Data::Dumper; sub get_ifc_name { my ($hash)=@_; print Dumper $hash; } sub setdefaults { my ($func,$defs)=@_; return sub { my ($hash)=@_; $func->({%$defs,%$hash}) } } my $f2= setdefaults( \&get_ifc_name, {one =>1}); $f2->({two =>2}); __DATA__ #OUTPUT $VAR1 = { 'one' => 1, 'two' => 2 };