# !!! UNTESTED !!! package MyNumberWrapper; use Scalar::Util 'looks_like_number'; sub new { my $class = shift; my $value; if ( @_ == 1 and defined $_[ 0 ] and looks_like_number( $_[ 0 ] ) { $value = 0 + shift; } else { # raise hell } return bless \$value, $class; } sub value { my $self = shift; return $$self + 0; } 1; __END__