in reply to Ugly syntax

Perhaps your example is contrived, but defining a manifest constant named FIRST for 1 seems like magic number avoidance run amok. Regardless,
use constant FIRST => 1; use constant SECOND => 2; use constant FIFTH => 5; %nums = ( &FIRST => 'Ein', &SECOND => 'Zwei', &FIFTH => 'Funf' );
works, though to use the same constants as keys, you need to say $nums{&FIRST} or $nums{+FIRST}