use strict; BEGIN { my %consts= ( CA => 1, AZ => 2, UT => 3, ); while( my( $name, $value )= each %consts ) { no strict 'refs'; *{$_."::".$name}= sub () { $value } for qw( A B C D ); } } package A; print CA,$/; package B; print AZ,$/; package C; print UT,$/;