Anonymous Monk,
I was going to whip up a little magic then I checked CPAN. You might want to have a look at Hash::Case::Preserve. It appears to be exactly what you are looking for. The author has written several similar modules that may also be of interest: