in reply to deep copy, not deep create

I agree the Class::Prototyped maybe a better solution but you could also check Tie::Hash::Layered

Otherwise:

%bavarian = ( dclone(%european), dclone(%german) );