use warnings; use integer; # makes no difference # 144115188075868217 == (2 ** 57) + 12345 $string1 = '144115188075868217'; $string2 = '144115188075868217crap'; $string1 += 0; { no warnings 'numeric'; $string2 += 0; } print $string1, "\n"; #prints 144115188075868217 ... correct print $string2, "\n"; # prints 144115188075868224 ... wrong