in reply to printf not behaving as expected

Running this test program:
my $v = 123456789012345; printf "%d %ld %u %15.0f %s\n", $v, $v, $v, $v, $v;
on my 32-bit perl 5.8 produces:
-1 -1 4294967295 123456789012345 123456789012345
So it looks like %s and %15.0f are worth a shot.

Later versions of Perl on certain platforms might further support %ll and %q (C "long long" et al type, typically 64-bit integers) according to sprintf.