use Storable qw(dclone); ... my %two = %{ dclone(\%one) } # dclone() takes a ref and returns a ref # So we'll have to put in \%one (not %one) # and then we have to dereference ( %{...} ) # what comes out.