use Scalar::Utils qw( blessed ); use DBI qw( looks_like_number ); use overload; sub my_is_number { my $x = shift; unless ( blessed( $x ) ) { return looks_like_number( $x ); } if ( overload::Method( $x, '<=>' ) ) { return !!1; } return; }