in reply to reference as hash keys and values

Certainly, one argument against using the notion of using references as hash-keys is that ... references can change.   In the general case, what would you do if the hash-key is a reference to “something” that, i.e. through another extant reference to the same “something,” suddenly changes its spots.

If you need to refer to an object in this way, it might be okay to explicitly serialize the object into a string form, e.g, YAML or even JSON, then use that string as the key.   (Presumably, this is more-or-less what the previously mentioned Tie module is doing ...)   But, whatever you wind up doing, I advocate doing it very explicitly.   (Consider defining a Perl class with appropriate methods... so “the right thing” is always done, and you only have to specify whatever “the right thing” is, once.)