my %newhash = ( accesslevels => { func1 => $oldhash{function}{func1}{content}, default => $oldhash{function}{default}{content} } ); #### my %newhash; foreach my $key1 (keys %oldhash) { foreach my $key2 (keys %{$oldhash{$key1}}) { foreach my $key3 (keys %{$oldhash{$key1}{$key2}}) { $newhash{$key1}{$key3} = $oldhash{$key1}{$key2}{$key3}{content} } } }