use Scalar::Util 'looks_like_number', 'blessed'; require overload; sub is_numeric { local $_=shift; if (!ref $_) { return looks_like_number($_); } if (!blessed $_) { return; } if (!overload::Overloaded $_) { return; } }