double i64d ( ) { __int64 x = 123435; return (double)x; } #### SV* i64p( ) { union { __int64 i; char s[8]; } x; x.i = 123456789; return newSVpv( x.s, 8 ); } ... ## Note: The unpacking will vary with endianness of the platform. my( @i64 ) = unpack 'VV', i64p(); print $i64[ 1 ] * 2**32 + $i64[ 0 ];