package aliased; BEGIN { eval { require Scalar::Util }; if( defined &Scalar::Util::refaddr ) { *refaddr= \&Scalar::Util::refaddr; } else { eval { require overload }; if( defined &overload::Overloaded ) { *refaddr= sub { if( overload::Overloaded( $_[0] ) ) { require Carp; Carp::confess( "Upgrade Scalar::Util ..." ); } return 0+$_[0]; }; } else { *refaddr= sub { 0+$_[0] }; } } } ...