my %HoHCopy = map { $_ => $HoH{$k} } grep { $HoH{$_} and values %{$HoH{$_}} } ( keys %HoH ); # or my %HoHCopy = map { ($HoH{$_} and values %{$HoH{$_}}) ? ($_ => $HoH{$k}) : () } ( keys %HoH );