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