diff options
| author | Fuji, Goro <gfuji@cpan.org> | 2010-10-13 10:54:37 +0900 |
|---|---|---|
| committer | Fuji, Goro <gfuji@cpan.org> | 2010-10-13 10:54:37 +0900 |
| commit | 14aa1420f0142f49beb6114599c27f665b34a075 (patch) | |
| tree | 09fd44a3a45057dbff54d2839500cb36477b4c17 /perl/lib | |
| parent | c506cd97e0032ec070a81b58a55f5089a4a1b60f (diff) | |
| download | msgpack-python-14aa1420f0142f49beb6114599c27f665b34a075.tar.gz | |
perl: comments
Diffstat (limited to 'perl/lib')
| -rw-r--r-- | perl/lib/Data/MessagePack/PP.pm | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/perl/lib/Data/MessagePack/PP.pm b/perl/lib/Data/MessagePack/PP.pm index 15ba22f..3aedf4c 100644 --- a/perl/lib/Data/MessagePack/PP.pm +++ b/perl/lib/Data/MessagePack/PP.pm @@ -17,6 +17,8 @@ BEGIN { my $unpack_uint64_slow; if(!eval { pack 'Q', 1 }) { # don't have quad types + # emulates quad types with Math::BigInt. + # very slow but works well. $unpack_int64_slow = sub { require Math::BigInt; my $high = unpack_uint32( $_[0], $_[1] ); @@ -35,7 +37,7 @@ BEGIN { }; $unpack_uint64_slow = sub { require Math::BigInt; - my $high = Math::BigInt->new( unpack_uint32( $_[0], $_[1]) ); + my $high = Math::BigInt->new( unpack_uint32( $_[0], $_[1]) ); my $low = Math::BigInt->new( unpack_uint32( $_[0], $_[1] + 4) ); return +($high << 32 | $low)->bstr; }; @@ -104,7 +106,8 @@ BEGIN { *unpack_uint64 = $unpack_uint64_slow || sub { unpack 'Q', substr( $_[0], $_[1], 8 ); }; } } - else { + else { # 5.10.0 or later + # pack_int64/uint64 are used only when the perl support quad types *pack_uint64 = sub { return pack 'CQ>', 0xcf, $_[0]; }; *pack_int64 = sub { return pack 'Cq>', 0xd3, $_[0]; }; *pack_double = sub { return pack 'Cd>', 0xcb, $_[0]; }; |
