One good thing about this hash approach is that, when you want to "rebuild" with the original names, you can just reverse the hash to build the "reverse lookup table."
%reverse_hash = reverse %hash;
This won't work if the values in the original hash aren't unique, of course. (I don't know chemistry, so I don't know if that's the case). Plus, you'd probably need to use actual strings as values for the original hash, as well.
--
Mephit (See my home node for my rant about Opera and PerlMonks, and my earliest nodes.