Are you parsing out the commas first? Perl auto-converts strings into numbers, but it doesn't like non-alphanumeric characters and when it finds some it just makes a guess.
It doesn't really just make a guess. It grabs all the numeric value it can find from the front of the string, and truncates anything past that. You can see the effect in action:
my @strings = qw(
2,300
2.54xyz123
2e32abc3
2.34,23
);
for (@strings) {
print "$_ => ", 0+$_, "\n";
}