summaryrefslogtreecommitdiff
path: root/perl/lib
diff options
context:
space:
mode:
authorFuji, Goro <gfuji@cpan.org>2010-10-13 10:54:37 +0900
committerFuji, Goro <gfuji@cpan.org>2010-10-13 10:54:37 +0900
commit14aa1420f0142f49beb6114599c27f665b34a075 (patch)
tree09fd44a3a45057dbff54d2839500cb36477b4c17 /perl/lib
parentc506cd97e0032ec070a81b58a55f5089a4a1b60f (diff)
downloadmsgpack-python-14aa1420f0142f49beb6114599c27f665b34a075.tar.gz
perl: comments
Diffstat (limited to 'perl/lib')
-rw-r--r--perl/lib/Data/MessagePack/PP.pm7
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]; };