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