in reply to Chomp Maybe?

There are quite a ways to drop the -ve sign...

my $due = -9.98; printf "substr_idx: %s\nneg_one_mul: %s\nregex: %s\n" , substr_idx($due) , neg_one_mul($due) , regex($due); sub substr_idx { my $number = shift; return -1 < index($number , '-' , 0) ? substr($number , 1) : $number; } sub neg_one_mul { my $number = shift; return $number =~ m/^-/ ? $number * -1 : $number; } sub regex { my $number = shift; return $number =~ m/^- (.+)/x ? $1 : $number; }

...Whatever you do just do not try to compare a floating point number (-9.98) against an integer (0) (or another float) -- due to inherent error in number representation -- w/o using some minimum difference that you would treat to be same as zero.