BEGIN { require POSIX; package POSIX; my $import= \&POSIX::import; *import= sub { warn "import( @_ )\n"; my( $pkg )= @_; eval "sub $_(); 1" || warn "$@" for grep /^[A-Z_]+$/, @_[1..$#_]; goto &$import; }; my $auto= \&POSIX::AUTOLOAD; *AUTOLOAD= sub { if( $AUTOLOAD =~ /^[A-Z_:]+$/ ) { warn "Auto-loading $AUTOLOAD.\n"; my $val = constant( ( split /::/, $AUTOLOAD )[-1] ); if( $! == 0 ) { goto &$AUTOLOAD if eval "sub $AUTOLOAD() { $val }; 1"; warn "$@"; } } goto &$auto; }; } use POSIX 'CHAR_MAX'; print "CHAR_MAX(", prototype("CHAR_MAX"), ")\n"; print CHAR_MAX+1, $/;