Are you going to do something with the values, because it looks like you are just copying the hash.. The simple way to do a re-assignment would just be: my %hash = %tmp;
Comment on Re: help reassigning hash with arrayref
Note though that that provides references to the arrays in the original hash so any changes to those arrays will be seen by the arrays in the new hash. That might or might not be what the OP wants, but probably isn't.