#!/usr/bin/perl
use Inline C => <<'END_C';
void num_test(SV* sv) {
I32 is_num = looks_like_number(sv);
printf("'%s' looks like a number: %s (SvNV(): %g)\n",
SvPV_nolen(sv),
is_num ? "yes":"no",
SvNV(sv) );
}
END_C
num_test('aa');
num_test('123');
num_test('123aa');
num_test('aa123');
num_test('1.23');
__END__
'aa' looks like a number: no (SvNV(): 0)
'123' looks like a number: yes (SvNV(): 123)
'123aa' looks like a number: no (SvNV(): 123)
'aa123' looks like a number: no (SvNV(): 0)
'1.23' looks like a number: yes (SvNV(): 1.23)
Update: added SvNV() results for comparison. |