for (keys %one) { $two{$_}[0] = $one{$_}[0]; $two{$_}[1] = $one{$_}[1]; } #### for my $k (keys %one) { $two{$k}[$_] = $one{$k}[$_] for 0..scalar( @{$one{$k}} ); } #### for my $k (keys %one) { $two{$k} = [ @{$one{$k}} ]; } #### 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.