use My::Wrapper qw(wrap); sub hello_world { my %params = %{shift()}; my $q = $params{q}; # etc. # different stuff here } wrap( \&hello_world ); #### sub wrap { my ( $code_ref ) = @_; # blah blah $code_ref->({ q => $q, T => \%T, # etc. }); # blah blah }