use warnings; use strict; use Inline C => Config => BUILD_NOISY => 1; use Inline C =><<'EOC'; int is_num(SV * x) { if(SvIOK(x) || SvUOK(x) || SvNOK(x)) return 1; return 0; } EOC my $ui = ~0; print is_num(2), "\n"; print is_num("2"), "\n"; print is_num($ui), "\n"; print is_num("$ui"), "\n"; print is_num(2.3), "\n"; print is_num("2.3"), "\n";