sub incdec { $number = shift; # do something if not /^\d*\.\d+$/ return $number+1 if $number =~ /^\d+$/; $number =~ /\.(\d+)$/; return $number + ("1E-".length($1); } for $n (1, .004, 1.99, 1.79, 1.009999) { print "$n++ = ".incdec($n)."\n"; } #### 1++ = 2 0.004++ = 0.005 1.99++ = 2 1.79++ = 1.8 1.009999++ = 1.01