package lexconstants; sub import { shift; my %h = @_; my $caller = caller; for my $name (keys %h) { *{$caller . "::$name"} = sub () { lexconstants::value($name) } unless defined &{$caller . "::$name"}; } $^H{lexconstants} = \ %h; } sub unimport { $^H{lexconstants} = undef; } sub value { my ($name) = @_; (caller(0))[10]{$name} or warn "Undefined constant $name..." }