use strict; use warnings; use Data::Dump; my %x = ( a => "red"); my %y = ( b => "green"); my %z = ( c => "black"); sub assign { my (%x, %y, %z) = ( %{$_[0]}, %{$_[1]}, %{$_[2]} ); dd \(%x, %y, %z); }