my @data = (-123.004,-.008,0,-0,.0987,1.0,12345,'d','test'); foreach my $value (@data){ if ( $value =~ /^-?(\d?|\d+)\.?(\d?|\d+)$/ ){ print "true\n"; } else{ print "false\n"; } }