use strict; use warnings; use Scalar::Util qw/looks_like_number/; use Benchmark qw/cmpthese/; sub seems_like_number { use warnings qw/FATAL all/; eval { $_[0] += 0; }; return $@ ? 0 : 1; } our @strings = map { my $element = ''; if( rand(1) > .5 ) { foreach my $n ( 0 .. int(rand(12)) ) { $element .= chr( int( rand( 57 ) ) + 65 ); } } else { $element = int( rand( 100_000 ) ); } $element; } 0 .. 499; my $count = -5; cmpthese( $count, { 'Seems' => 'my $res = seems_like_number( $_ ) foreach @strings;', 'Looks' => 'my $res = looks_like_number( $_ ) foreach @strings;', } ); #### Rate Seems Looks Seems 38.8/s -- -87% Looks 297/s 665% --