in reply to negative numbers when doing multiplications?

You apparently have a perl binary that only supports 32-bit integers.  And the value you compute (2348273369088) is much larger than 32 bits can hold. Represented as binary, it is:

10_00100010_11000000_00000000_00000000_00000000

So, it gets truncated

11000000_00000000_00000000_00000000

and as the leftmost (most significant) bit happens to be 1, and you used %d (= signed int) in printf, it is interpreted as a negative value (see Two's Complement). Effectively the same as

printf "%d", 0b11000000_00000000_00000000_00000000 - 2**32; # -1073 +741824

with a perl that supports ints larger than 32 bit.