http://qs321.pair.com?node_id=11118880


in reply to Reliably parsing an integer

Try to craft this solution to your needs -- it reliably parses floating point, change that to integer.
#!/usr/bin/perl use strict; use Config; # check architecture and die if not as expected $Config{nvtype} eq "double" && $Config{doublesize} == 8 && $Config{ivtype} eq "long" && $Config{longsize} == 8 or die "not compatibile perl"; my $a = "-000123.456000"; # format good or die $a =~ /\G([-+]?(?=[0-9]|\.[0-9])[0-9]*(\.[0-9]*)?)/gc or die "not a nu +mber"; my $n = $1; # max length is 15, because architecure is such... convert string to n +umber length $n <= 15 + 2 or die "number too long"; $n = 0 + $n; # check if number fits within 15 digits abs $n > 99999999999999.9 and die "number out of range"; print "$a ---> $n is OK\n"; .... root@orion:~# perl /tmp/aaaa -000123.456000 ---> -123.456 is OK