in reply to Re: bignum with (s)printf - 64bit OS OK, 32bit incorrect. What to do?
in thread bignum with (s)printf - 64bit OS OK, 32bit incorrect. What to do?

I believe you are right about the cause.

According to the docs, Math::BigInt doesn't have a full printf method. Nor does bigint have one, even though it can overload the global hex function so it could conceivably overload sprintf as well, but that wouldn't be easy to implement.

What Math::BigInt has is the methods bstr, as_hex, as_oct, as_bin to format an integer as decimal, hexadecimal, octal and binary respectively. For example,

use bignum; say+(3**100)->as_hex;
will output 3**100 in hexadecimal, which comes out as
0x5a4653ca673768565b41f775d6947d55cf3813d1

(If you wanted a full printf function that works on bignums, you could use Math::GMPz, though of course it will only work with Math::GMPz objects, you can't directly pass a Math::BigInt object to it.)