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:
Cheers - L~R