Max 32-bit signed integer: 2,147,483,647
Max 32-bit unsigned integer: 4,294,967,295
You want to print 2,810,337,464, which lands between the two. You have a 32-bit build of Perl and you told Perl to print a signed integer. It started by converting the input to an integer if it wasn't already, then it treated the result as a signed integer. The result is 2810337464 - 2**32
Ask for an unsigned integer or a floating point number:
$ perl -e'printf( "%d\n", 2810337464 );'
-1484629832
$ perl -e'printf( "%u\n", 2810337464 );'
2810337464
$ perl -e'printf( "%.0f\n", 2810337464 );'
2810337464