use strict; while () { chomp; my $input = $_; tr/$, +//d; if (/^[-]?\d+$/) { print "Acceptable: '$input' -> $_\n"; } elsif (/^[-]?\d+\.[\d]+$/) { ## problem print "Acceptable: '$input' -> ", int $_, "\n"; } else { print "Not acceptable: '$input' -> $_\n"; } } __DATA__ +30 -400 +20,0 -300.02 $ -50.1 -$ 500 - $ 60 + $ 30. #### Acceptable: '-400' -> -400 Acceptable: '+20,0' -> 200 Acceptable: '-300.02' -> -300 Acceptable: '$ -50.1' -> -50 Acceptable: '-$ 500' -> -500 Acceptable: '- $ 60' -> -60 Not acceptable: ' + $ 30.' -> 30.