To answer your questions: 1. I could use non-XS Readonly for non-production (or Tie::Hash::FixedKeys as well). The desire for constness comes from wanting to write code that is self-documenting and abuse-preventing. In our environment, hacks and cut-n-paste from production code can (and does) happen. I want to minimize the hacks that will eventually occur but at the same time maximize speed. Sadly, I don't think my version of perl supports Hash::Util.