use constant { FOO => 1, BAR => 2 }; #### my @num_to_name = qw(FOO BAR); #### my $thing = FOO; print "Thing = ".$num_to_name[$thing]."\n"; #### my @num_to_name; BEGIN { @num_to_name = qw(FOO BAR); for my $number ( 0 .. $#things) { *blah = eval "*My::Package::".$things[$number]; *blah = sub { $number }; } }