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