sub _int64_native { $_[0] =~ /^(-?)0x(.*)/? hex($2)*($1? -1 : 1) : 0+$_[0] } sub _int64_bigint { Math::BigInt->new($_[0]) } # Can scalars hold 64-bit ints natively? if ((0x7FFFFFFE << 31) > 0 && (0x7FFFFFFE << 63) == 0) { *int64= \&_int64_native; } else { *int64= \&_int64_bigint; }