in reply to Bijective data association structure?

Then just use one hash, since you never use the same value as both a key and a value...

my %chordpos; @chordpos{1..12}= qw( A A# ... ); @chordpos{values %chordpos}= keys %chordpos;

                - tye