1#!./perl 2 3use strict; 4use warnings; 5 6use Test::More tests => 19; 7use Scalar::Util qw(looks_like_number); 8 9foreach my $num (qw(1 -1 +1 1.0 +1.0 -1.0 -1.0e-12)) { 10 ok(looks_like_number($num), "'$num'"); 11} 12 13is(!!looks_like_number("Inf"), $] >= 5.006001, 'Inf'); 14is(!!looks_like_number("Infinity"), $] >= 5.008, 'Infinity'); 15is(!!looks_like_number("NaN"), $] >= 5.008, 'NaN'); 16is(!!looks_like_number("foo"), '', 'foo'); 17is(!!looks_like_number(undef), '', 'undef'); 18is(!!looks_like_number({}), '', 'HASH Ref'); 19is(!!looks_like_number([]), '', 'ARRAY Ref'); 20 21use Math::BigInt; 22my $bi = Math::BigInt->new('1234567890'); 23is(!!looks_like_number($bi), 1, 'Math::BigInt'); 24is(!!looks_like_number("$bi"), 1, 'Stringified Math::BigInt'); 25 26{ package Foo; 27sub TIEHASH { bless {} } 28sub FETCH { $_[1] } 29} 30my %foo; 31tie %foo, 'Foo'; 32is(!!looks_like_number($foo{'abc'}), '', 'Tied'); 33is(!!looks_like_number($foo{'123'}), 1, 'Tied'); 34 35is(!!looks_like_number("\x{1815}"), '', 'MONGOLIAN DIGIT FIVE'); 36 37# We should copy some of perl core tests like t/base/num.t here 38