c:\@Work\Perl\monks>perl -wMstrict -le
"use Scalar::Util qw(looks_like_number);
;;
use Data::Dump qw(pp);
;;
for my $n (
undef, '', '.', '..', '.1.', '1..1',
0, '0', '0.', '0.0', '.0', '000.000',
1, '1', '1.', '1.0', '001.100',
'+1', '-1', '2e3',
) {
printf qq{%s %s like num \n}, pp($n),
looks_like_number($n) ? 'looks' : 'does not look';
}
"
undef does not look like num
"" does not look like num
"." does not look like num
".." does not look like num
".1." does not look like num
"1..1" does not look like num
0 looks like num
0 looks like num
"0." looks like num
"0.0" looks like num
".0" looks like num
"000.000" looks like num
1 looks like num
1 looks like num
"1." looks like num
"1.0" looks like num
"001.100" looks like num
"+1" looks like num
-1 looks like num
"2e3" looks like num
c:\@Work\Perl\monks>perl -wMstrict -le
"sub unsigned_real {
return defined($_[0])
&& $_[0] =~ m{ \A (?: \d+ (?: [.] \d*)? | \d* [.] \d+) \z }xms
;
}
;;
use Data::Dump qw(pp);
;;
for my $n (
undef, '', '.', '..', '.1.', '1..1',
'+1', '-1', '2e3',
0, '0', '0.', '0.0', '.0', '000.000',
1, '1', '1.', '1.0', '001.100',
) {
printf qq{%s %s real \n}, pp($n),
unsigned_real($n) ? 'looks' : 'does not look';
}
"
undef does not look real
"" does not look real
"." does not look real
".." does not look real
".1." does not look real
"1..1" does not look real
"+1" does not look real
-1 does not look real
"2e3" does not look real
0 looks real
0 looks real
"0." looks real
"0.0" looks real
".0" looks real
"000.000" looks real
1 looks real
1 looks real
"1." looks real
"1.0" looks real
"001.100" looks real
If the speed of any of these is acceptable, you will, of course, develop your own Test::More test suite(s). (But you'll want to do | you've already done that in any case. :)
Give a man a fish: <%-{-{-{-<
|