in reply to Passing a hash plus some strings to a subroutine

I'd maybe do something like this, or just name it $data and use $data->{'foo'} rather than having to have an actual hash locally (unless you're worried about altering the original through the ref).

sub generate { my( $record, $status, $_data ) = @_; my %data = %{ $_data }; ... }

The cake is a lie.
The cake is a lie.
The cake is a lie.