in reply to Default Hash Key
In this case I would simply opt for “keep it simple.” Write a nice short sub that produces the effect that you want ... and move along.
There is no problem with doing an “if exists” test for a particular value followed by an apparent-lookup of that same value, because you can be quite sure that on that “second lookup” that value will be found most-immediately.
So, just go for an implementation that is reasonably clear, and trust the Gods of Perl to have done the rest on your behalf. (They're quite good at that sort of thing...)