public inbox for git-commits@fedoraproject.org
help / color / mirror / Atom feed
* [rpms/perl-Storable] rawhide: 3.41 bump (rhbz#2485665)
@ 2026-06-08 11:23 Jitka Plesnikova
  0 siblings, 0 replies; only message in thread
From: Jitka Plesnikova @ 2026-06-08 11:23 UTC (permalink / raw)
  To: git-commits

A new commit has been pushed.

Repo   : rpms/perl-Storable
Branch : rawhide
Commit : 52be1d515dc595ae3dda9152ffa2ae6cfeb875ed
Author : Jitka Plesnikova <jplesnik@redhat.com>
Date   : 2026-06-08T13:23:12+02:00
Stats  : +9/-14505 in 5 file(s)
URL    : https://src.fedoraproject.org/rpms/perl-Storable/c/52be1d515dc595ae3dda9152ffa2ae6cfeb875ed?branch=rawhide

Log:
3.41 bump (rhbz#2485665)

---
diff --git a/.gitignore b/.gitignore
index dd78fa3..ea501cd 100644
--- a/.gitignore
+++ b/.gitignore
@@ -7,3 +7,4 @@
 /Storable-3.11_repackaged.tar.gz
 /Storable-3.15.tar.gz
 /Storable-3.25.tar.gz
+/Storable-3.41.tar.gz

diff --git a/Storable-3.25-Upgrade-to-3.32.patch b/Storable-3.25-Upgrade-to-3.32.patch
deleted file mode 100644
index e67bc46..0000000
--- a/Storable-3.25-Upgrade-to-3.32.patch
+++ /dev/null
@@ -1,538 +0,0 @@
-From 93b4cf22054a0e3f9f5d4ae8eaec85e8ca28944c Mon Sep 17 00:00:00 2001
-From: Jitka Plesnikova <jplesnik@redhat.com>
-Date: Mon, 12 Jun 2023 16:00:23 +0200
-Subject: [PATCH] Upgrade to 3.32
-
----
- ChangeLog   |  29 ++++++++++++++
- Makefile.PL |   2 +-
- Storable.pm |  30 ++++++++------
- Storable.xs | 111 ++++++++++++++++++++++++++++++++++++++++++----------
- t/blessed.t |  53 ++++++++++++++++++++++++-
- t/boolean.t |  84 +++++++++++++++++++++++++++++++++++++++
- t/malice.t  |   6 +--
- 7 files changed, 278 insertions(+), 37 deletions(-)
- create mode 100644 t/boolean.t
-
-diff --git a/ChangeLog b/ChangeLog
-index b1f4790..6619543 100644
---- a/ChangeLog
-+++ b/ChangeLog
-@@ -1,3 +1,32 @@
-+2023-05-26 21:36:00 demerphq
-+    version 3.32
-+        * Update security advisory to be more clear
-+
-+2023-02-26 00:31:32 demerphq
-+    version 3.31
-+        * Fixup for ppport fix in 3.30
-+
-+2023-02-22 09:56:27 leont
-+    version 3.30
-+        * Use ppport for all modules in dist.
-+
-+2023-01-04 17:33:24 iabyn
-+    version 3.29
-+        * Store code fixes identified from refcounted stack patch
-+
-+2022-11-08 10:12:46 tony
-+    version 3.28
-+        * Store hook error reporting improvements
-+	* Store hook handles regex objects properly.
-+
-+2022-06-20 20:32:29 toddr
-+    version 3.27
-+        * Use cBOOL instead of !! in xs code
-+
-+2022-04-18 17:36:00 toddr
-+    version 3.26
-+        * Conform to ppport.h 3.68 recommendations
-+
- 2021-08-30 07:46:52 nwclark
-     version 3.25
-         * No changes from previous version
-diff --git a/Makefile.PL b/Makefile.PL
-index e03e141..b705654 100644
---- a/Makefile.PL
-+++ b/Makefile.PL
-@@ -29,7 +29,7 @@ WriteMakefile(
-                 'ExtUtils::MakeMaker' => '6.31',
-             },
-             TEST_REQUIRES => {
--                'Test::More' => '0.41',
-+                'Test::More' => '0.82',
-             },
-            )
-         : () ),
-diff --git a/Storable.pm b/Storable.pm
-index 8e6ab25..d531f2b 100644
---- a/Storable.pm
-+++ b/Storable.pm
-@@ -28,7 +28,7 @@ our @EXPORT_OK = qw(
- our ($canonical, $forgive_me);
- 
- BEGIN {
--  our $VERSION = '3.25';
-+  our $VERSION = '3.32';
- }
- 
- our $recursion_limit;
-@@ -1197,11 +1197,16 @@ compartment:
- 
- =head1 SECURITY WARNING
- 
--B<Do not accept Storable documents from untrusted sources!>
-+B<Do not accept Storable documents from untrusted sources!> There is
-+B<no> way to configure Storable so that it can be used safely to process
-+untrusted data.  While there I<are> various options that can be used to
-+mitigate specific security issues these options do I<not> comprise a
-+complete safety net for the user, and processing untrusted data may
-+result in segmentation faults, remote code execution, or privilege
-+escalation.  The following lists some known features which represent
-+security issues that should be considered by users of this module.
- 
--Some features of Storable can lead to security vulnerabilities if you
--accept Storable documents from untrusted sources with the default
--flags. Most obviously, the optional (off by default) CODE reference
-+Most obviously, the optional (off by default) CODE reference
- serialization feature allows transfer of code to the deserializing
- process. Furthermore, any serialized object will cause Storable to
- helpfully load the module corresponding to the class of the object in
-@@ -1224,12 +1229,15 @@ With the default setting of C<$Storable::flags> = 6, creating or destroying
- random objects, even renamed objects can be controlled by an attacker.
- See CVE-2015-1592 and its metasploit module.
- 
--If your application requires accepting data from untrusted sources,
--you are best off with a less powerful and more-likely safe
--serialization format and implementation. If your data is sufficiently
--simple, L<Cpanel::JSON::XS>, L<Data::MessagePack> or L<Sereal> are the best
--choices and offer maximum interoperability, but note that Sereal is
--L<unsafe by default|Sereal::Decoder/ROBUSTNESS>.
-+If your application requires accepting data from untrusted sources, you
-+are best off with a less powerful and more-likely safe serialization
-+format and implementation.  If your data is sufficiently simple,
-+L<Cpanel::JSON::XS> or L<Data::MessagePack> are fine alternatives.  For
-+more complex data structures containing various Perl specific data types
-+like regular expressions or aliased data L<Sereal> is the best
-+alternative and offers maximum interoperability.  Note that Sereal is
-+L<unsafe by default|Sereal::Decoder/ROBUSTNESS>, but you can configure
-+the encoder and decoder to mitigate any security issues.
- 
- =head1 WARNING
- 
-diff --git a/Storable.xs b/Storable.xs
-index 6944b76..a558dd7 100644
---- a/Storable.xs
-+++ b/Storable.xs
-@@ -16,18 +16,13 @@
- #include <perl.h>
- #include <XSUB.h>
- 
--#ifndef PERL_VERSION_LT
--# if !defined(PERL_VERSION) || !defined(PERL_REVISION) || ( PERL_REVISION == 5 && ( PERL_VERSION < 10 || (PERL_VERSION == 10 && PERL_SUBVERSION < 1) ) )
--#   define NEED_PL_parser
--#   define NEED_sv_2pv_flags
--#   define NEED_load_module
--#   define NEED_vload_module
--#   define NEED_newCONSTSUB
--#   define NEED_newSVpvn_flags
--#   define NEED_newRV_noinc
--# endif
-+#define NEED_sv_2pv_flags
-+#define NEED_load_module
-+#define NEED_vload_module
-+#define NEED_newCONSTSUB
-+#define NEED_newSVpvn_flags
-+#define NEED_newRV_noinc
- #include "ppport.h"             /* handle old perls */
--#endif
- 
- #ifdef DEBUGGING
- #define DEBUGME /* Debug mode, turns assertions on as well */
-@@ -176,7 +171,9 @@
- #define SX_SVUNDEF_ELEM	C(31)	/* array element set to &PL_sv_undef */
- #define SX_REGEXP	C(32)	/* Regexp */
- #define SX_LOBJECT	C(33)	/* Large object: string, array or hash (size >2G) */
--#define SX_LAST		C(34)	/* invalid. marker only */
-+#define SX_BOOLEAN_TRUE	C(34)	/* Boolean true */
-+#define SX_BOOLEAN_FALSE	C(35)	/* Boolean false */
-+#define SX_LAST		C(36)	/* invalid. marker only */
- 
- /*
-  * Those are only used to retrieve "old" pre-0.6 binary images.
-@@ -975,7 +972,7 @@ static const char byteorderstr_56[] = {BYTEORDER_BYTES_56, 0};
- #endif
- 
- #define STORABLE_BIN_MAJOR	2		/* Binary major "version" */
--#define STORABLE_BIN_MINOR	11		/* Binary minor "version" */
-+#define STORABLE_BIN_MINOR	12		/* Binary minor "version" */
- 
- #if !defined (SvVOK)
- /*
-@@ -1454,6 +1451,8 @@ static const sv_retrieve_t sv_old_retrieve[] = {
-     (sv_retrieve_t)retrieve_other,	/* SX_SVUNDEF_ELEM not supported */
-     (sv_retrieve_t)retrieve_other,	/* SX_REGEXP */
-     (sv_retrieve_t)retrieve_other,  	/* SX_LOBJECT not supported */
-+    (sv_retrieve_t)retrieve_other,	/* SX_BOOLEAN_TRUE not supported */
-+    (sv_retrieve_t)retrieve_other,	/* SX_BOOLEAN_FALSE not supported */
-     (sv_retrieve_t)retrieve_other,  	/* SX_LAST */
- };
- 
-@@ -1477,6 +1476,8 @@ static SV *retrieve_weakoverloaded(pTHX_ stcxt_t *cxt, const char *cname);
- static SV *retrieve_vstring(pTHX_ stcxt_t *cxt, const char *cname);
- static SV *retrieve_lvstring(pTHX_ stcxt_t *cxt, const char *cname);
- static SV *retrieve_svundef_elem(pTHX_ stcxt_t *cxt, const char *cname);
-+static SV *retrieve_boolean_true(pTHX_ stcxt_t *cxt, const char *cname);
-+static SV *retrieve_boolean_false(pTHX_ stcxt_t *cxt, const char *cname);
- 
- static const sv_retrieve_t sv_retrieve[] = {
-     0,					/* SX_OBJECT -- entry unused dynamically */
-@@ -1513,6 +1514,8 @@ static const sv_retrieve_t sv_retrieve[] = {
-     (sv_retrieve_t)retrieve_svundef_elem,/* SX_SVUNDEF_ELEM */
-     (sv_retrieve_t)retrieve_regexp,	/* SX_REGEXP */
-     (sv_retrieve_t)retrieve_lobject,	/* SX_LOBJECT */
-+    (sv_retrieve_t)retrieve_boolean_true,	/* SX_BOOLEAN_TRUE */
-+    (sv_retrieve_t)retrieve_boolean_false,	/* SX_BOOLEAN_FALSE */
-     (sv_retrieve_t)retrieve_other,  	/* SX_LAST */
- };
- 
-@@ -2187,7 +2190,7 @@ static AV *array_call(pTHX_
-     XPUSHs(sv_2mortal(newSViv(cloning)));	/* Cloning flag */
-     PUTBACK;
- 
--    count = call_sv(hook, G_ARRAY);	/* Go back to Perl code */
-+    count = call_sv(hook, G_LIST);	/* Go back to Perl code */
- 
-     SPAGAIN;
- 
-@@ -2454,6 +2457,16 @@ static int store_scalar(pTHX_ stcxt_t *cxt, SV *sv)
-             pv = SvPV(sv, len);		/* We know it's SvPOK */
-             goto string;			/* Share code below */
-         }
-+#ifdef SvIsBOOL
-+    } else if (SvIsBOOL(sv)) {
-+        TRACEME(("mortal boolean"));
-+        if (SvTRUE_nomg_NN(sv)) {
-+            PUTMARK(SX_BOOLEAN_TRUE);
-+        }
-+        else {
-+            PUTMARK(SX_BOOLEAN_FALSE);
-+        }
-+#endif
-     } else if (flags & SVf_POK) {
-         /* public string - go direct to string read.  */
-         goto string_readlen;
-@@ -3250,6 +3263,7 @@ static int store_code(pTHX_ stcxt_t *cxt, CV *cv)
-         CROAK(("Unexpected return value from B::Deparse::coderef2text\n"));
- 
-     text = POPs;
-+    PUTBACK;
-     len = SvCUR(text);
-     reallen = strlen(SvPV_nolen(text));
- 
-@@ -3318,7 +3332,7 @@ static int get_regexp(pTHX_ stcxt_t *cxt, SV* sv, SV **re, SV **flags) {
-     XPUSHs(rv);
-     PUTBACK;
-     /* optimize to call the XS directly later */
--    count = call_sv((SV*)cv, G_ARRAY);
-+    count = call_sv((SV*)cv, G_LIST);
-     SPAGAIN;
-     if (count < 2)
-       CROAK(("re::regexp_pattern returned only %d results", (int)count));
-@@ -3567,7 +3581,10 @@ static int store_hook(
-     int need_large_oids = 0;
- #endif
- 
--    TRACEME(("store_hook, classname \"%s\", tagged #%d", HvNAME_get(pkg), (int)cxt->tagnum));
-+    classname = HvNAME_get(pkg);
-+    len = strlen(classname);
-+
-+    TRACEME(("store_hook, classname \"%s\", tagged #%d", classname, (int)cxt->tagnum));
- 
-     /*
-      * Determine object type on 2 bits.
-@@ -3576,6 +3593,7 @@ static int store_hook(
-     switch (type) {
-     case svis_REF:
-     case svis_SCALAR:
-+    case svis_REGEXP:
-         obj_type = SHT_SCALAR;
-         break;
-     case svis_ARRAY:
-@@ -3615,13 +3633,20 @@ static int store_hook(
-         }
-         break;
-     default:
--        CROAK(("Unexpected object type (%d) in store_hook()", type));
-+        {
-+            /* pkg_can() always returns a ref to a CV on success */
-+            CV *cv = (CV*)SvRV(hook);
-+            const GV * const gv = CvGV(cv);
-+            const char *gvname = GvNAME(gv);
-+            const HV * const stash = GvSTASH(gv);
-+            const char *hvname = stash ? HvNAME(stash) : NULL;
-+
-+            CROAK(("Unexpected object type (%s) of class '%s' in store_hook() calling %s::%s",
-+                   sv_reftype(sv, FALSE), classname, hvname, gvname));
-+        }
-     }
-     flags = SHF_NEED_RECURSE | obj_type;
- 
--    classname = HvNAME_get(pkg);
--    len = strlen(classname);
--
-     /*
-      * To call the hook, we need to fake a call like:
-      *
-@@ -5882,6 +5907,50 @@ static SV *retrieve_integer(pTHX_ stcxt_t *cxt, const char *cname)
-     return sv;
- }
- 
-+/*
-+ * retrieve_boolean_true
-+ *
-+ * Retrieve boolean true copy.
-+ */
-+static SV *retrieve_boolean_true(pTHX_ stcxt_t *cxt, const char *cname)
-+{
-+    SV *sv;
-+    HV *stash;
-+
-+    TRACEME(("retrieve_boolean_true (#%d)", (int)cxt->tagnum));
-+
-+    sv = newSVsv(&PL_sv_yes);
-+    stash = cname ? gv_stashpv(cname, GV_ADD) : 0;
-+    SEEN_NN(sv, stash, 0);  /* Associate this new scalar with tag "tagnum" */
-+
-+    TRACEME(("boolean true"));
-+    TRACEME(("ok (retrieve_boolean_true at 0x%" UVxf ")", PTR2UV(sv)));
-+
-+    return sv;
-+}
-+
-+/*
-+ * retrieve_boolean_false
-+ *
-+ * Retrieve boolean false copy.
-+ */
-+static SV *retrieve_boolean_false(pTHX_ stcxt_t *cxt, const char *cname)
-+{
-+    SV *sv;
-+    HV *stash;
-+
-+    TRACEME(("retrieve_boolean_false (#%d)", (int)cxt->tagnum));
-+
-+    sv = newSVsv(&PL_sv_no);
-+    stash = cname ? gv_stashpv(cname, GV_ADD) : 0;
-+    SEEN_NN(sv, stash, 0);  /* Associate this new scalar with tag "tagnum" */
-+
-+    TRACEME(("boolean false"));
-+    TRACEME(("ok (retrieve_boolean_false at 0x%" UVxf ")", PTR2UV(sv)));
-+
-+    return sv;
-+}
-+
- /*
-  * retrieve_lobject
-  *
-@@ -7774,7 +7843,7 @@ CODE:
-         assert(cxt);
-         result = cxt->entry && (cxt->optype & ix) ? TRUE : FALSE;
-     } else {
--        result = !!last_op_in_netorder(aTHX);
-+        result = cBOOL(last_op_in_netorder(aTHX));
-     }
-     ST(0) = boolSV(result);
- 
-diff --git a/t/blessed.t b/t/blessed.t
-index d9a77b3..dea569b 100644
---- a/t/blessed.t
-+++ b/t/blessed.t
-@@ -44,7 +44,7 @@ use Storable qw(freeze thaw store retrieve fd_retrieve);
-    'long VSTRING' => \(my $lvstring = eval "v" . 0 x 300),
-    LVALUE         => \(my $substr  = substr((my $str = "foo"), 0, 3)));
- 
--my $test = 13;
-+my $test = 18;
- my $tests = $test + 41 + (2 * 6 * keys %::immortals) + (3 * keys %::weird_refs);
- plan(tests => $tests);
- 
-@@ -414,3 +414,54 @@ is(ref $t, 'STRESS_THE_STACK');
- 
-     unlink("store$$");
- }
-+
-+{
-+    # trying to freeze a glob via STORABLE_freeze
-+    {
-+        package GlobHookedBase;
-+
-+        sub STORABLE_freeze {
-+            return \1;
-+        }
-+
-+        package GlobHooked;
-+        our @ISA = "GlobHookedBase";
-+    }
-+    use Symbol ();
-+    my $glob = bless Symbol::gensym(), "GlobHooked";
-+    eval {
-+        my $data = freeze($glob);
-+    };
-+    my $msg = $@;
-+    like($msg, qr/Unexpected object type \(GLOB\) of class 'GlobHooked' in store_hook\(\) calling GlobHookedBase::STORABLE_freeze/,
-+         "check we get the verbose message");
-+}
-+
-+SKIP:
-+{
-+    $] < 5.012
-+      and skip "Can't assign regexps directly before 5.12", 4;
-+    my $hook_called;
-+    # store regexp via hook
-+    {
-+        package RegexpHooked;
-+        sub STORABLE_freeze {
-+            ++$hook_called;
-+            "$_[0]";
-+        }
-+        sub STORABLE_thaw {
-+            my ($obj, $cloning, $serialized) = @_;
-+            ++$hook_called;
-+            $$obj = ${ qr/$serialized/ };
-+        }
-+    }
-+
-+    my $obj = bless qr/abc/, "RegexpHooked";
-+    my $data = freeze($obj);
-+    ok($data, "froze regexp blessed into hooked class");
-+    ok($hook_called, "and the hook was actually called");
-+    $hook_called = 0;
-+    my $obj_thawed = thaw($data);
-+    ok($hook_called, "hook called for thaw");
-+    like("abc", $obj_thawed, "check the regexp");
-+}
-diff --git a/t/boolean.t b/t/boolean.t
-new file mode 100644
-index 0000000..9ba19c0
---- /dev/null
-+++ b/t/boolean.t
-@@ -0,0 +1,84 @@
-+use strict;
-+use warnings;
-+
-+my $true_ref;
-+my $false_ref;
-+BEGIN {
-+    $true_ref = \!!1;
-+    $false_ref = \!!0;
-+}
-+
-+BEGIN {
-+    unshift @INC, 't';
-+    unshift @INC, 't/compat' if $] < 5.006002;
-+    require Config;
-+    if ($ENV{PERL_CORE} and $Config::Config{'extensions'} !~ /\bStorable\b/) {
-+        print "1..0 # Skip: Storable was not built\n";
-+        exit 0;
-+    }
-+}
-+
-+use Test::More tests => 12;
-+use Storable qw(thaw freeze);
-+
-+use constant CORE_BOOLS => defined &builtin::is_bool;
-+
-+{
-+  my $x = $true_ref;
-+  my $y = ${thaw freeze \$x};
-+  is($y, $x);
-+  eval {
-+    $$y = 2;
-+  };
-+  isnt $@, '',
-+    'immortal true maintained as immortal';
-+}
-+
-+{
-+  my $x = $false_ref;
-+  my $y = ${thaw freeze \$x};
-+  is($y, $x);
-+  eval {
-+    $$y = 2;
-+  };
-+  isnt $@, '',
-+    'immortal false maintained as immortal';
-+}
-+
-+{
-+  my $true = $$true_ref;
-+  my $x = \$true;
-+  my $y = ${thaw freeze \$x};
-+  is($$y, $$x);
-+  is($$y, '1');
-+  SKIP: {
-+    skip "perl $] does not support tracking boolean values", 1
-+      unless CORE_BOOLS;
-+    BEGIN { CORE_BOOLS and warnings->unimport('experimental::builtin') }
-+    ok builtin::is_bool($$y);
-+  }
-+  eval {
-+    $$y = 2;
-+  };
-+  is $@, '',
-+    'mortal true maintained as mortal';
-+}
-+
-+{
-+  my $false = $$false_ref;
-+  my $x = \$false;
-+  my $y = ${thaw freeze \$x};
-+  is($$y, $$x);
-+  is($$y, '');
-+  SKIP: {
-+    skip "perl $] does not support tracking boolean values", 1
-+      unless CORE_BOOLS;
-+    BEGIN { CORE_BOOLS and warnings->unimport('experimental::builtin') }
-+    ok builtin::is_bool($$y);
-+  }
-+  eval {
-+    $$y = 2;
-+  };
-+  is $@, '',
-+    'mortal true maintained as mortal';
-+}
-diff --git a/t/malice.t b/t/malice.t
-index 8adae95..7b92d3d 100644
---- a/t/malice.t
-+++ b/t/malice.t
-@@ -32,7 +32,7 @@ our $file_magic_str = 'pst0';
- our $other_magic = 7 + length $byteorder;
- our $network_magic = 2;
- our $major = 2;
--our $minor = 11;
-+our $minor = 12;
- our $minor_write = $] >= 5.019 ? 11 : $] > 5.008 ? 9 : $] > 5.005_50 ? 8 : 4;
- 
- use Test::More;
-@@ -206,7 +206,7 @@ sub test_things {
-     $where = $file_magic + $network_magic;
-   }
- 
--  # Just the header and a tag 255. As 33 is currently the highest tag, this
-+  # Just the header and a tag 255. As 34 is currently the highest tag, this
-   # is "unexpected"
-   $copy = substr ($contents, 0, $where) . chr 255;
- 
-@@ -226,7 +226,7 @@ sub test_things {
-   # local $Storable::DEBUGME = 1;
-   # This is the delayed croak
-   test_corrupt ($copy, $sub,
--                "/^Storable binary image v$header->{major}.$minor6 contains data of type 255. This Storable is v$header->{major}.$minor and can only handle data types up to 33/",
-+                "/^Storable binary image v$header->{major}.$minor6 contains data of type 255. This Storable is v$header->{major}.$minor and can only handle data types up to 35/",
-                 "bogus tag, minor plus 4");
-   # And check again that this croak is not delayed:
-   {
--- 
-2.40.1
-

diff --git a/Storable-3.32-Upgrade-to-3.37.patch b/Storable-3.32-Upgrade-to-3.37.patch
deleted file mode 100644
index e96f2f8..0000000
--- a/Storable-3.32-Upgrade-to-3.37.patch
+++ /dev/null
@@ -1,13958 +0,0 @@
-From 0d65f98dc75661b3629cd4660f5c1b8565f6b1a2 Mon Sep 17 00:00:00 2001
-From: Jitka Plesnikova <jplesnik@redhat.com>
-Date: Wed, 30 Apr 2025 18:37:30 +0200
-Subject: [PATCH] Upgrade to 3.37
-
----
- ChangeLog                      | 1810 ++++++++++++++++----------------
- MANIFEST                       |   65 --
- MANIFEST.SKIP                  |   58 +
- META.json                      |   58 -
- META.yml                       |   30 -
- Makefile.PL                    |   95 +-
- README                         |    2 +-
- Storable.xs                    | 1388 ++++++++++++------------
- hints/hpux.pl                  |    4 +-
- hints/linux.pl                 |    2 +-
- Storable.pm => lib/Storable.pm |  334 +++---
- stacksize                      |    6 +-
- t/CVE-2015-1592.t              |    5 +-
- t/HAS_ATTACH.pm                |   10 -
- t/HAS_HOOK.pm                  |    9 -
- t/HAS_OVERLOAD.pm              |   14 -
- t/attach.t                     |   55 +-
- t/attach_errors.t              |  381 ++++---
- t/attach_singleton.t           |   39 +-
- t/blessed.t                    |  172 +--
- t/boolean.t                    |  106 +-
- t/canonical.t                  |  101 +-
- t/circular_hook.t              |   37 +-
- t/code.t                       |  173 ++-
- t/compat01.t                   |   18 +-
- t/compat06.t                   |  105 +-
- t/croak.t                      |   30 +-
- t/dclone.t                     |   47 +-
- t/destroy.t                    |   15 +-
- t/downgrade.t                  |  277 +++--
- t/file_magic.t                 |  478 +++++----
- t/flags.t                      |  126 +--
- t/forgive.t                    |   25 +-
- t/freeze.t                     |   83 +-
- t/huge.t                       |   44 +-
- t/hugeids.t                    |  301 +++---
- t/integer.t                    |  233 ++--
- t/interwork56.t                |   42 +-
- t/just_plain_nasty.t           |   56 +-
- t/leaks.t                      |   29 +-
- t/lib/HAS_HOOK.pm              |   14 +
- t/lib/HAS_OVERLOAD.pm          |   18 +
- t/lib/STDump.pm                |  138 +++
- t/lib/STTestLib.pm             |   39 +
- t/lock.t                       |   24 +-
- t/make_56_interwork.pl         |   26 +-
- t/make_downgrade.pl            |   25 +-
- t/make_overload.pl             |    3 +-
- t/malice.t                     |  372 +++----
- t/overload.t                   |   65 +-
- t/recurse.t                    |   39 +-
- t/regexp.t                     |   28 +-
- t/restrict.t                   |  120 +--
- t/retrieve.t                   |   22 +-
- t/robust.t                     |    5 +-
- t/sig_die.t                    |   11 +-
- t/st-dump.pl                   |  136 ---
- t/store.t                      |   77 +-
- t/testlib.pl                   |   38 -
- t/threads.t                    |   15 +-
- t/tied.t                       |  150 ++-
- t/tied_hook.t                  |  190 ++--
- t/tied_items.t                 |   25 +-
- t/tied_reify.t                 |    8 +-
- t/tied_store.t                 |   23 +-
- t/utf8.t                       |   27 +-
- t/utf8hash.t                   |  178 ++--
- t/weak.t                       |  180 ++--
- 68 files changed, 4295 insertions(+), 4564 deletions(-)
- delete mode 100644 MANIFEST
- create mode 100644 MANIFEST.SKIP
- delete mode 100644 META.json
- delete mode 100644 META.yml
- rename Storable.pm => lib/Storable.pm (86%)
- delete mode 100644 t/HAS_ATTACH.pm
- delete mode 100644 t/HAS_HOOK.pm
- delete mode 100644 t/HAS_OVERLOAD.pm
- create mode 100644 t/lib/HAS_HOOK.pm
- create mode 100644 t/lib/HAS_OVERLOAD.pm
- create mode 100644 t/lib/STDump.pm
- create mode 100644 t/lib/STTestLib.pm
- mode change 100644 => 100755 t/make_56_interwork.pl
- mode change 100644 => 100755 t/make_downgrade.pl
- mode change 100644 => 100755 t/make_overload.pl
- delete mode 100644 t/st-dump.pl
- delete mode 100644 t/testlib.pl
-
-diff --git a/ChangeLog b/ChangeLog
-index 6619543..e743526 100644
---- a/ChangeLog
-+++ b/ChangeLog
-@@ -1,1124 +1,1182 @@
--2023-05-26 21:36:00 demerphq
--    version 3.32
--        * Update security advisory to be more clear
--
--2023-02-26 00:31:32 demerphq
--    version 3.31
--        * Fixup for ppport fix in 3.30
--
--2023-02-22 09:56:27 leont
--    version 3.30
--        * Use ppport for all modules in dist.
--
--2023-01-04 17:33:24 iabyn
--    version 3.29
--        * Store code fixes identified from refcounted stack patch
--
--2022-11-08 10:12:46 tony
--    version 3.28
--        * Store hook error reporting improvements
--	* Store hook handles regex objects properly.
--
--2022-06-20 20:32:29 toddr
--    version 3.27
--        * Use cBOOL instead of !! in xs code
--
--2022-04-18 17:36:00 toddr
--    version 3.26
--        * Conform to ppport.h 3.68 recommendations
--
--2021-08-30 07:46:52 nwclark
--    version 3.25
--        * No changes from previous version
--
--2021-08-25 08:05:16 nwclark
--    version 3.24_50
--        * Remove code and tests only present to support perls before 5.6.1
--          Storable implicitly needs >= v5.6.1.
--        * Use SvPVCLEAR from ppport.h
--        * Remove XS code "commented" out with #if 0
--        * Refactor store_lhash() to remove some code duplication
--        * Avoid calling hv_iterval() twice for each hash entry
--        * Fix a bug in the recursion depth check in store_lhash()
--
--unreleased
--    version 3.24
--        * Fix a (possible) typo in Sntohl
--
--unreleased
--    version 3.23
--        * Fix typos
--        * avoid stderr noise in t/canonical.t
--
--2020-07-31 19:36:37 atoomic
--    version 3.22
--        * use PERL_COMPARE macros
--
--2020-04-23 13:33:05 ilmari
--    version 3.21
--        * fix repeated-word typos
--        * fix t/huge.t PERL_TEST_MEMORY diagnostic messages
--
--2020-01-27 10:27:00 TonyC
--    version 3.20
--        * fix a format string and arguments for some debugging text
--        * linkify references to alternatives to Storable
--
--2020-01-27 11:01:00 TonyC
--    version 3.19
--        * add casts to match some I32 parameters to "%d" formats (#17339)
--        * fix dependencies in Makefile.PL -> META (#17422)
--        * make use of note() optional, this requires a newer version of
--          Test::More and there's a circular dependency between later
--          versions of Test::More and Storable  (#17422)
--
--2019-11-19 07:59:39 TonyC
--    version 3.18
--        * update bug tracker to point at github (#17298)
--        * disallow vstring magic strings over 2GB-1 (#17306)
--        * mark some ASCII dependent tests as ASCII platform only
--
--2019-08-08 11:48:00 TonyC
--    version 3.17
--        * correct a data type to ensure the check for too large results from
--	  STORABLE_freeze() are detected correctly (detected by Coverity)
--	* removed remains of stack size detection from the build process.
--	* moved CAN_FLOCK detection into XS to simplify the build process.
--
--2019-06-11 10:43:00 TonyC
--    version 3.16
--        * (perl #134179) fix self-referencing structures that include regexps
--        * bless regexps to preserve bless qr//, "Foo"
--
--2019-04-23 16:00:00 xsawyerx
--    version 3.15
--    * Fix leaking.
--
--unreleased
--    version 3.14
--	* (perl #133708) don't build-time probe for stack limits at all
--
--unreleased
--    version 3.12
--        * (perl #133411) don't probe for stack limits with -Dusecrosscompile
--
--2018-04-27 20:40:00 xsawyerx
--    version 3.11
--        * Fix Strawberry Perl build failures.
--
--2018-04-21 22:00:00 xsawyerx
--    Version 3.10
--        * Fix binary artifacts from distribution.
--
--2018-04-21 16:49:00 xsawyerx
--    Version 3.09
--        * Fix "provides" in metadata (META.yml/META.json) to use the Storable
--          template instead of a small other file (which also didn't exist).
--
--2018-04-21 11:23:00 xsawyerx
--    Version 3.08
--        * (perl #132849) try to disable core files when deliberatly segfaulting.
--        * (perl #127743) don't probe Storable limits so much.
--        * (perl #132893) don't probe for Storable recursion limits on old Win32.
--        * (perl #132870) workaround VC2017 compiler bug.
--        * (perl #127743) re-work for debugging builds with MSVC.
--        * (perl #133039) dont build a Storable.so/.dll with a static perl build.
--
--2018-02-07 15:08:00 tonyc
--    Version 3.06
--
--        * support large object ids.  The code in theory supported arrays
--        with more than 2**32 elements, but references to the elements
--        emitted at the end of the array with be retrieved as references to
--        the wrong elements.
--        * 32-bit object ids over 2**31-1 weren't correctly handled.
--        * hook object id generation now supports 64-bit ids where needed
--        * writing 64-bit lengths in network order now works
--        * reading 64-bit lengths in network order now reads the components
--        in the correct order.
--        * retrieving large object tags are now only handled on 64-bit
--        platforms, large object tags should only be emitted for objects
--        that are too large for the 32-bit address space, so it was only
--        wasted code.
--        * reading 32-bit lengths for LSCALAR and LUTF8STR as unsigned
--        (perl #131990)
--        * reading flagged large object hashes didn't read the flags
--        * treat the 32-bit size of hook data as unsigned, values over 2GB
--        were treated as large (close to 2**64) parameters to NEWSV().
--        (perl #131999)
--        * added support for hook data over 4GB in size
--        * zero length data receievd from STORABLE_freeze() no longer
--        results in an invalid SV being passed to STORABLE_thaw/_attach()
--        (perl #118551)
--        * where practical, padding is now cleared when emitting a long
--        double (perl #131136)
--        * cache the value of $Storable::DEBUGME (since cperl enabled
--        Storable TRACEME builds for all -DDEBUGGING builds)
--        * no longer discard exceptions thrown by
--        STORABLE_freeze/_thaw/attach() (perl #25933)
--        * fix dependencies used to build Storable.pm from __Storable__.pm
--        * add experimental support for freezing/thawing regular
--        expressions (perl #50608)
--        * re-work recursion limiting to store the limit in a perl variable
--        instead of baked into Storable.$so.  This allows static Storable
--        builds to work, and avoids the kind of circular reference on
--        Storable.$so.
--
--2017-07-24 13:57:13 rurban
--    Version 3.05_13
--
--        * mingw fix: use safe defaults, not segfaulting defaults.
--        mingw fails on the stacksize binary search, leaving it empty.
--
--Wed Apr 19 09:11:07 2017 +0200 Reini Urban <rurban@cpan.org>
--    Version 3.05_12
--
--        * enhance stack reserve from 8 to 16
--        * fix LD_LIBRARY_PATH usage for CORE
--        * fixed some coverity warnings and leaks
--        * added a release make target
--
--Wed Mar 29 21:04:28 2017 +0200 Reini Urban <rurban@cpan.org>
--    Version 3.05_11
--
--        * croak on sizes read > I32_MAX
--        * simplify last_op_in_netorder
--        * protect from empty retrieve_vstring
--        * protect store_other error buf, potential static
--        buffer overflow.
--
--Tue Mar 14 09:52:20 2017 +0100 Reini Urban <rurban@cpan.org>
--    Version 3.05_10
--
--        * CORE-only improvements to stacksize
--
--Thu Mar 9 19:20:19 2017 +0100 Reini Urban <rurban@cpan.org>
--    Version 3.05_09
--
--        * compute the stacksizes, improve cleanup within croak
--        from stack exhaustion.
--        * added stack_depth and stack_depth_hash getters.
--
--Wed Mar  8 21:03:43 CET 2017 Reini Urban <rurban@cpan.org>
--    Version 3.05_08
--
--        * finetune the max stack limit, for C++, DEBUGGING and 32bit.
--        * fix t/blessed.t for cperl5.22
--
--Sun Mar 5 13:36:47 2017 +0100 Reini Urban <rurban@cpan.org>
--    Version 3.05_07
--
--        * Fixed a podchecker issue
--
--Sun Mar 5 11:42:04 2017 +0100 Reini Urban <rurban@cpan.org>
--    Version 3.05_06
--
--        * Fixed wrong recursion depth error with large arrays containing
--        another array.
--	L<[cperl #257]|https://github.com/perl11/cperl/issues/257>
--
--Thu Feb 2 12:40:44 2017 +0100 Reini Urban <rurban@cpanel.net>
--    Version 3.05_05
--
--        * Add leak tests for [cpan #97316], [perl #121928]
--        * Limit the max recursion depth to 1200 on 32bit systems.
--        We have no max_depth option yet, as in JSON::XS.
--
--Thu Feb 2 11:59:21 2017 +0100 Reini Urban <rurban@cpanel.net>
--    Version 3.05_04
--
--        * Fix retrieve_tied_array which fails since 5.16
--        [cpan #84705]
--        * Improve t/blessed.t in the creation of sv_yes/sv_no
--        with threaded perls.
--
--Tue Jan 31 02:55:30 2017 +0100 Reini Urban <rurban@cpanel.net>
--    Version 3.05_03
--
--        * Tune t/recurse.t stack-overflow limit more.
--
--Mon Jan 30 19:50:29 2017 +0100 Reini Urban <rurban@cpanel.net>
--    Version 3.05_02
--
--        * Tune t/recurse.t stack-overflow limit. Small 64bit systems overflow
--        even with depth 3000, where 32bit are ok.
--
--Mon Jan 30 15:13:38 2017 +0100 Reini Urban <rurban@cpanel.net>
--    Version 3.05_01
-+Release history for Storable
- 
--        * Protect against stack overflows with nested arrays and hashes
--        [cpan #97526]. This imposes a new limit to your nested structures,
--        but JSON::XS has a limit of 512. We use a max_depth of 3000 for the
--        typical stack limit of 8k.
-+  - reorganize files to match modern standards
-+  - use strict in library
-+  - use strict and warnings in tests
-+  - normaize whitespace in code
-+  - other minor cleanups
- 
-+3.33 - 2024-07-11 00:41:35
- 
--Sun Jan 29 11:36:43 2017 +0100 Reini Urban <rurban@cpanel.net>
--    Version 3.05
-+  - add some test names to t/utf8.t
- 
--        * Protect against classname len overflow on the stack
--        and 2x on the heap with retrieve_bless and retrieve_hook.
--        A serious security issue with malcrafted storable files or buffers,
--        but p5p accepts no CVE on Storable attacks. See RT #130635
--        (reported by JD).
--        * Fix NULL ptr SEGVs with retrieve_code and retrieve_other.
--        See RT #130098 (reported and fixed by JD)
--        * Fix wrong huge LOBJECT support, broken since 3.00c.
--        Repro with `export PERL_TEST_MEMORY=8`
--        * Fix the few remaining 2-arg open calls.
--        * Portability and backport fixes back to 5.6.2
-+3.32 - 2023-05-26 21:36:00 demerphq
- 
--Sat Jan 7 09:01:29 2017 +0100 Reini Urban <rurban@cpanel.net>
--    Version 3.04c
-+  - Update security advisory to be more clear
- 
--        * fix printf types and warnings, esp. for 32bit use64bitint
--        * Change sv_setpvn(…, "…", …) to sv_setpvs(…, "…")
-+3.31 - 2023-02-26 00:31:32 demerphq
- 
--Tue Jul 26 11:49:33 2016 +1000 Tony Cook <tony@develop-help.com>
--    Version 3.03c
-+  - Fixup for ppport fix in 3.30
- 
--        * remove . from @INC when loading optional modules
-+3.30 - 2023-02-22 09:56:27 leont
- 
--Sun Nov 20 18:06:45 2016 +0100 Reini Urban <rurban@cpanel.net>
--    Version 3.02c
-+  - Use ppport for all modules in dist.
- 
--        * Fix -Wc++11-compat warnings, fix -Wchar-subscripts
-+3.29 - 2023-01-04 17:33:24 iabyn
- 
--Fri Sep 16 01:32:59 2016 +0200 Reini Urban <rurban@cpanel.net>
--    Version 3.01c
-+  - Store code fixes identified from refcounted stack patch
- 
--        * Added warn_security("Movable-Type CVE-2015-1592 Storable metasploit attack")
--          when detecting the third destructive metasploit vector,
--          thawing bless \"mt-config.cgi", "CGITempFile".
-+3.28 - 2022-11-08 10:12:46 tony
- 
--Thu Mar 31 17:10:27 2016 +0200 Reini Urban <rurban@cpanel.net>
--    Version 3.00c
-+  - Store hook error reporting improvements
- 
--        * Added support for u64 strings, arrays and hashes >2G
--          via a new LOBJECT tag. This is for 32bit systems and lengths
--          between 2GB and 4GB (I32-U32), and 64bit (>I32).
--        * Bumped STORABLE_BIN_MINOR and STORABLE_BIN_WRITE_MINOR from 10 to 11
--        * fix parallel tests, use unique filenames.
--        * fixed 2 instances of 2arg open,
--        * added optional flag arguments to skip tie and bless on retrieve/thaw,
--        * added SECURITY WARNING and Large data support to docs
--        * compute CAN_FLOCK at compile-time
--        * reformat everything consistently
--        * enable DEBUGME tracing and asserts with -DDEBUGGING
--        * fix all 64 bit compiler warnings
--        * added some abstraction methods to avoid code duplication
-+  - Store hook handles regex objects properly.
- 
--?????? p5p <perl5-porters@perl.org>
--    Version 2.65
-+3.27 - 2022-06-20 20:32:29 toddr
- 
--	* Replace multiple 'use vars' by 'our'
--	* remove Config dependency
-+  - Use cBOOL instead of !! in xs code
- 
--Wed Jul  2 16:25:25 IST 2014   Abhijit Menon-Sen <ams@toroid.org>
--    Version 2.51
-+3.26 - 2022-04-18 17:36:00 toddr
- 
--	* [perl #121928] Fix memory leak for dclone inside freeze hook
--	  (Alex Solovey)
--	* Do not call DESTROY for empty objects
--	  (Vladimir Timofeev)
--	* Other bugfixes
-+  - Conform to ppport.h 3.68 recommendations
- 
--Sat Jul 13 18:34:27 IST 2013   Abhijit Menon-Sen <ams@toroid.org>
--    Version 2.45
-+3.25 - 2021-08-30 07:46:52 nwclark
- 
--       * [perl #118829] Memory leaks in STORABLE_attach
--         (Vladimir Timofeev)
--       * [perl #118139] Don't SEGV during global destruction
--         (Nicholas Clark, report/test from Reini Urban)
--       * Added security warnings section (Steffen Mueller)
--       * Update INSTALLDIRS to favour installation in 'site'
--         (James E Keenan)
-+  - No changes from previous version
- 
--Tue 11 Sep 06:51:11 IST 2012   Abhijit Menon-Sen <ams@toroid.org>
--    Version 2.39
-+3.24_50 - 2021-08-25 08:05:16 nwclark
- 
--	Various bugfixes, including compatibility fixes for older
--	versions of Perl and vstring handling.
-+  - Remove code and tests only present to support perls before 5.6.1
-+    Storable implicitly needs >= v5.6.1.
- 
--Sun  3 Jul 09:10:11 IST 2011   Abhijit Menon-Sen <ams@toroid.org>
--    Version 2.29
-+  - Use SvPVCLEAR from ppport.h
- 
--	Various bugfixes, notably including preventing nfreeze from
--	incorrectly stringifying integers.
-+  - Remove XS code "commented" out with #if 0
- 
--Fri  3 Dec 14:12:32 GMT 2010   David Leadbeater <dgl@dgl.cx>
--    Version 2.25
-+  - Refactor store_lhash() to remove some code duplication
- 
--	Support for serializing coderefs containing UTF-8.
-+  - Avoid calling hv_iterval() twice for each hash entry
- 
--Fri Nov 12 10:52:19 IST 2010   Abhijit Menon-Sen <ams@toroid.org>
-+  - Fix a bug in the recursion depth check in store_lhash()
- 
--    Version 2.24
-+3.24 - unreleased
- 
--	Performance improvement for overloaded classes from Benjamin
--	Holzman.
-+  - Fix a (possible) typo in Sntohl
- 
--Fri Nov 12 10:36:22 IST 2010   Abhijit Menon-Sen <ams@toroid.org>
-+3.23 - unreleased
- 
--    Version 2.23
-+  - Fix typos
- 
--	Release the latest version from the Perl repository.
-+  - avoid stderr noise in t/canonical.t
- 
--Thu Aug  6 10:55:50 IST 2009   Abhijit Menon-Sen <ams@toroid.org>
-+3.22 - 2020-07-31 19:36:37 atoomic
- 
--    Version 2.21
-+  - use PERL_COMPARE macros
- 
--	Includes hints/hpux.pl that was inadvertently left out of 2.20.
-+3.21 - 2020-04-23 13:33:05 ilmari
- 
--Mon May 18 09:38:20 IST 2009   Abhijit Menon-Sen <ams@toroid.org>
-+  - fix repeated-word typos
- 
--    Version 2.20
-+  - fix t/huge.t PERL_TEST_MEMORY diagnostic messages
- 
--	Fix bug handling blessed references to overloaded objects, plus
--	other miscellaneous fixes.
-+3.20 - 2020-01-27 10:27:00 TonyC
- 
--	(Version 2.19 was released with 5.8.9.)
-+  - fix a format string and arguments for some debugging text
- 
--Thu Nov 22 13:24:18 IST 2007   Abhijit Menon-Sen <ams@toroid.org>
-+  - linkify references to alternatives to Storable
- 
--    Version 2.18
-+3.19 - 2020-01-27 11:01:00 TonyC
- 
--	Compile fixes for older Perls. (No functional changes.)
-+  - add casts to match some I32 parameters to "%d" formats (#17339)
- 
--Sat Nov 17 02:12:12 IST 2007   Abhijit Menon-Sen <ams@toroid.org>
-+  - fix dependencies in Makefile.PL -> META (#17422)
- 
--    Version 2.17
-+  - make use of note() optional, this requires a newer version of
-+    Test::More and there's a circular dependency between later
-+    versions of Test::More and Storable  (#17422)
- 
--	Various broken tests fixed. (No functional changes.)
-+3.18 - 2019-11-19 07:59:39 TonyC
- 
--Sat Mar 31 06:11:06 IST 2007   Abhijit Menon-Sen <ams@toroid.org>
-+  - update bug tracker to point at github (#17298)
- 
--    Version 2.16
-+  - disallow vstring magic strings over 2GB-1 (#17306)
- 
--        1. Fixes to Storable::dclone, read_magic, retrieve_lscalar
--        2. Storable 0.1 compatibility
--        3. Miscellaneous compile/leak/test/portability fixes
-+  - mark some ASCII dependent tests as ASCII platform only
- 
--Mon May 23 22:48:49 IST 2005   Abhijit Menon-Sen <ams@wiw.org>
-+3.17 - 2019-08-08 11:48:00 TonyC
- 
--    Version 2.15
-+  - correct a data type to ensure the check for too large results from
-+    STORABLE_freeze() are detected correctly (detected by Coverity)
- 
--        Minor changes to address a couple of compile problems.
-+  - removed remains of stack size detection from the build process.
- 
--Mon Apr 25 07:29:14 IST 2005   Abhijit Menon-Sen <ams@wiw.org>
-+  - moved CAN_FLOCK detection into XS to simplify the build process.
- 
--    Version 2.14
-+3.16 - 2019-06-11 10:43:00 TonyC
- 
--	1. Store weak references
--	2. Add STORABLE_attach hook.
-+  - (perl #134179) fix self-referencing structures that include regexps
- 
--Thu Jun 17 12:26:43 BST 2004   Nicholas Clark <nick@ccl4.org>
-+  - bless regexps to preserve bless qr//, "Foo"
- 
--    Version 2.13
-+3.15 - 2019-04-23 16:00:00 xsawyerx
- 
--        1. Don't change the type of top level overloaded references to RV -
--	   they are perfectly correct as PVMG
--	2. Storable needs to cope with incoming frozen data that happens to be
--	   utf8 encoded.
-+  - Fix leaking.
- 
--Wed Mar 17 15:40:29 GMT 2004   Nicholas Clark <nick@ccl4.org>
-+3.14 - unreleased
- 
--    Version 2.12
-+  - (perl #133708) don't build-time probe for stack limits at all
- 
--        1. Add regression tests for the auto-require of STORABLE_thaw
--        2. Add auto-require of modules to restore overloading (and tests)
--        3. Change to no context (should give speedup with ithreads)
-+3.12 - unreleased
- 
--Sat Mar 13 20:11:03 GMT 2004   Nicholas Clark <nick@ccl4.org>
--	
--    Version 2.11
-+  - (perl #133411) don't probe for stack limits with -Dusecrosscompile
- 
--        1. Storing restricted hashes in canonical order would SEGV. Fixed.
--        2. It was impossible to retrieve references to PL_sv_no and
--           PL_sv_undef from STORABLE_thaw hooks.
--        3. restrict.t was failing on 5.8.0, due to 5.8.0's unique
--           implementation of restricted hashes using PL_sv_undef
--        4. These changes allow a space optimisation for restricted hashes.
-+3.11 - 2018-04-27 20:40:00 xsawyerx
- 
--Sat Jan 24 16:22:32 IST 2004   Abhijit Menon-Sen <ams@wiw.org>
-+  - Fix Strawberry Perl build failures.
- 
--    Version 2.10
-+3.10 - 2018-04-21 22:00:00 xsawyerx
- 
--        1. Thread safety: Storable::CLONE/init_perlinterp() now create
--           a new Perl context for each new ithread.
--           (From Stas Bekman and Jan Dubois.)
--        2. Fix a tag count mismatch with $Storable::Deparse that caused
--           all back-references after a stored sub to be off-by-N (where
--           N was the number of code references in between).
--           (From Sam Vilain.)
--        3. Prevent CODE references from turning into SCALAR references.
--           (From Slaven Rezic.)
-+  - Fix binary artifacts from distribution.
- 
--Sat Jan  3 18:49:18 GMT 2004   Nicholas Clark <nick@ccl4.org>
-+3.09 - 2018-04-21 16:49:00 xsawyerx
- 
--    Version 2.09
-+  - Fix "provides" in metadata (META.yml/META.json) to use the Storable
-+    template instead of a small other file (which also didn't exist).
- 
--	Fix minor problems with the CPAN release
--	1: Make Storable.xs work on 5.8.2 and later (already in the core)
--	2: Ship the linux hints file
--	3: Ship Test::More for the benefit of Perls pre 5.6.2
--	4: Correct Makefile.PL to only install in core for 5.8.0 and later
-+3.08 - 2018-04-21 11:23:00 xsawyerx
- 
--Sat Sep  6 01:08:20 IST 2003   Abhijit Menon-Sen <ams@wiw.org>
-+  - (perl #132849) try to disable core files when deliberatly segfaulting.
- 
--    Version 2.08
-+  - (perl #127743) don't probe Storable limits so much.
- 
--        This release works around a 5.8.0 bug which caused hashes to not
--        be marked as having key flags even though an HEK had HEK_WASUTF8
--        set. (Note that the only reasonable solution is to silently drop
--        the flag from the affected key.)
-+  - (perl #132893) don't probe for Storable recursion limits on old Win32.
- 
--        Users of RT 3 who were seeing assertion failures should upgrade.
--        (Perl 5.8.1 will have the bug fixed.)
-+  - (perl #132870) workaround VC2017 compiler bug.
- 
--Mon May  5 10:24:16 IST 2003   Abhijit Menon-Sen <ams@wiw.org>
-+  - (perl #127743) re-work for debugging builds with MSVC.
- 
--    Version 2.07
-+  - (perl #133039) dont build a Storable.so/.dll with a static perl build.
- 
--        Minor bugfixes (self-tied objects are now correctly stored, as
--        are the results of additions larger than INT_MAX).
-+3.06 - 2018-02-07 15:08:00 tonyc
- 
--Mon Oct  7 21:56:38 BST 2002   Nicholas Clark  <nick@ccl4.org>
-+  - support large object ids.  The code in theory supported arrays
-+    with more than 2**32 elements, but references to the elements
-+    emitted at the end of the array with be retrieved as references to
-+    the wrong elements.
- 
--    Version 2.06
-+  - 32-bit object ids over 2**31-1 weren't correctly handled.
- 
--	Remove qr// from t/downgrade.t so that it will run on 5.004
--	Mention $File::Spec::VERSION a second time in t/forgive.t so that it
--	runs without warnings in 5.004 (this may be a 5.00405 bug I'm working
--	round)
--	Fix t/integer.t initialisation to actually generate 64 bits of 9c
--	Fix comparison tests to use eval to get around 64 bit IV conversion
--	issues on 5.6.x, following my t/integer.t ^ precedence bug found by
--	Rafael Garcia-Suarez
--	Alter t/malice.t to work with Test/More.pm in t/, and skip individual
--	subtests that use $Config{ptrsize}, so that the rest of the test can
--	now be run with 5.004
--	Change t/malice.t and the error message in check_magic in Storable.xs
--	from "Pointer integer size" to "Pointer size"
--	Remove prerequisite of Test::More from Makefile.PL
--	Ship Test::Builder, Test::Simple and Test::More in t
--
--Thu Oct  3 08:57:22 IST 2002   Abhijit Menon-Sen <ams@wiw.org>
--
--    Version 2.05
--
--        Adds support for CODE references from Slaven Rezic
--        <slaven.rezic@berlin.de>.
--
--Fri Jun  7 23:55:41 BST 2002   Nicholas Clark
--
--    Version 2.04
--
--	Bug fix from Radu Greab <radu@netsoft.ro> (plus regression test)
--	to fix a recently introduced bug detected by Dave Rolsky.
--	Bug was that for a non threaded build, the class information was
--	being lost at freeze time on the first object with a STORABLE_freeze
--	hook. Consequentially the object was not blessed at all when thawed.
--	(The presence (or lack) of STORABLE_thaw was irrelevant; this was
--	a store-time data lost bug, caused by failure to initialize internal
--	context)
--	The bug was introduced as development perl change 16442 (on
--	2002/05/07), so has been present since 2.00.
--	Patches to introduce more regression tests to reduce the chance of
--	a reoccurrence of this sort of goof are always welcome.
--	
--Thu May 30 20:31:08 BST 2002   Nicholas Clark <nick@ccl4.org>
--
--    Version 2.03        Header changes on 5.6.x on Unix where IV is long long
--
--        5.6.x introduced the ability to have IVs as long long.  However,
--        Configure still defined BYTEORDER based on the size of a long.
--        Storable uses the BYTEORDER value as part of the header, but
--        doesn't explicitly store sizeof(IV) anywhere in the header.
--        Hence on 5.6.x built with IV as long long on a platform that
--        uses Configure (ie most things except VMS and Windows) headers
--        are identical for the different IV sizes, despite the files
--        containing some fields based on sizeof(IV)
--
--        5.8.0 is consistent; all platforms have BYTEORDER in config.h
--        based on sizeof(IV) rather than sizeof(long).  This means that
--        the value of BYTEORDER will change from (say) 4321 to 87654321
--        between 5.6.1 and 5.8.0 built with the same options to Configure
--        on the same machine.  This means that the Storable header will
--        differ, and the two versions will wrongly thing that they are
--        incompatible.
--
--        For the benefit of long term consistency, Storable now
--        implements the 5.8.0 BYTEORDER policy on 5.6.x.  This means that
--        2.03 onwards default to be incompatible with 2.02 and earlier
--        (ie the large 1.0.x installed base) on the same 5.6.x perl.
--
--        To allow interworking, a new variable
--        $Storable::interwork_56_64bit is introduced. It defaults to
--        false. Set it to true to read and write old format files. Don't
--        use it unless you have existing stored data written with 5.6.x
--        that you couldn't otherwise read, or you need to interwork with
--        a machine running older Storable on a 5.6.x with long long IVs
--        (i.e., you probably don't need to use it).
--
--Sat May 25 22:38:39 BST 2002   Nicholas Clark <nick@ccl4.org>
--
--    Version 2.02
--                
--        Rewrite Storable.xs so that the file header structure for write_magic
--        is built at compile time, and check_magic attempts to the header in
--        blocks rather than byte per byte. These changes make the compiled
--        extension 2.25% smaller, but are not significant enough to give a
--        noticeable speed up.
--
--Thu May 23 22:50:41 BST 2002   Nicholas Clark <nick@ccl4.org>
--
--    Version 2.01
--
--        - New regression tests integer.t
--        - Add code to safely store large unsigned integers.
--        - Change code not to attempt to store large integers (ie > 32 bits)
--          in network order as 32 bits.
--        
--        *Never* underestimate the value of a pathological test suite carefully
--        crafted with maximum malice before writing a line of real code. It
--        prevents crafty bugs from stowing away in your released code.
--        It's much less embarrassing to find them before you ship.
--        (Well, never underestimate it if you ever want to work for me)
--        
--Fri May 17 22:48:59 BST 2002   Nicholas Clark <nick@ccl4.org>
--
--    Version 2.0, binary format 2.5 (but writes format 2.4 on pre 5.7.3)
--
--        The perl5 porters have decided to make sure that Storable still
--        builds on pre-5.8 perls, and make the 5.8 version available on CPAN.
--        The VERSION is now 2.0, and it passes all tests on 5.005_03, 5.6.1
--        and 5.6.1 with threads. On 5.6.0 t/downgrade.t fails tests 34 and 37,
--        due to a bug in 5.6.0 - upgrade to 5.6.1.
--
--        Jarkko and I have collated the list of changes the perl5 porters have
--        from the perl5 Changes file:
--
--        - data features of upcoming perl 5.8.0 are supported: Unicode hash
--          keys (Unicode hash values have been supported since Storable 1.0.1)
--          and "restricted hashes" (readonly hashes and hash entries)
--        - a newer version of perl can now be used to serialize data which is
--          not supported in earlier perls: Storable will attempt to do the
--          right thing for as long as possible, croaking only when safe data
--          conversion simply isn't possible. Alternatively earlier perls can
--          opt to have a lossy downgrade data instead of croaking
--        - when built with perls pre 5.7.3 this Storable writes out files
--          with binary format 2.4, the same format as Storable 1.0.8 onwards.
--          This should mean that this Storable will inter-operate seamlessly
--          with any Storable 1.0.8 or newer on perls pre 5.7.3
--        - dclone() now works with empty string scalar objects
--        - retrieving of large hashes is now more efficient
--        - more routines autosplit out of the main module, so Storable should
--          load slightly more quickly
--        - better documentation
--        - the internal context objects are now freed explicitly, rather than
--          relying on thread or process exit
--        - bugs fixed in debugging trace code affecting builds made with 64 bit
--          IVs
--        - code tidy-ups to allow clean compiles with more warning options
--          turned on avoid problems with $@ getting corrupted on 5.005_03 if
--          Carp wasn't already loaded
--        - added &show_file_magic, so you can add to /etc/magic and teach
--          Unix's file command about Storable files
--
--        We plan to keep Storable on CPAN in sync with the Perl core, so
--        if you encounter bugs or other problems building or using Storable,
--        please let us know at perl5-porters@perl.org
--        Patches welcome!
--        
--Sat Dec  1 14:37:54 MET 2001   Raphael Manfredi <Raphael_Manfredi@pobox.com>
--
--        This is the LAST maintenance release of the Storable module.
--        Indeed, Storable is now part of perl 5.8, and will be maintained
--        as part of Perl.  The CPAN module will remain available there
--        for people running pre-5.8 perls.
--
--        Avoid requiring Fcntl upfront, useful to embedded runtimes.
--        Use an eval {} for testing, instead of making Storable.pm
--        simply fail its compilation in the BEGIN block.
--
--        store_fd() will now correctly autoflush file if needed.
-+  - hook object id generation now supports 64-bit ids where needed
- 
--Tue Aug 28 23:53:20 MEST 2001   Raphael Manfredi <Raphael_Manfredi@pobox.com>
-+  - writing 64-bit lengths in network order now works
- 
--        Fixed truncation race with lock_retrieve() in lock_store().
--        The file has to be truncated only once the exclusive lock is held.
-+  - reading 64-bit lengths in network order now reads the components
-+    in the correct order.
- 
--        Removed spurious debugging messages in .xs file.
-+  - retrieving large object tags are now only handled on 64-bit
-+    platforms, large object tags should only be emitted for objects
-+    that are too large for the 32-bit address space, so it was only
-+    wasted code.
- 
--Sun Jul  1 13:27:32 MEST 2001   Raphael Manfredi <Raphael_Manfredi@pobox.com>
-+  - reading 32-bit lengths for LSCALAR and LUTF8STR as unsigned
-+    (perl #131990)
- 
--        Systematically use "=over 4" for POD linters.
--        Apparently, POD linters are much stricter than would
--        otherwise be needed, but that's OK.
-+  - reading flagged large object hashes didn't read the flags
- 
--        Fixed memory corruption on croaks during thaw().  Thanks
--        to Claudio Garcia for reproducing this bug and providing the
--        code to exercise it.  Added test cases for this bug, adapted
--        from Claudio's code.
-+  - treat the 32-bit size of hook data as unsigned, values over 2GB
-+    were treated as large (close to 2**64) parameters to NEWSV().
-+    (perl #131999)
- 
--        Made code compile cleanly with -Wall (from Jarkko Hietaniemi).
-+  - added support for hook data over 4GB in size
- 
--        Changed tagnum and classnum from I32 to IV in context.  Also
--        from Jarkko.
-+  - zero length data receievd from STORABLE_freeze() no longer
-+    results in an invalid SV being passed to STORABLE_thaw/_attach()
-+    (perl #118551)
- 
--Thu Mar 15 01:22:32 MET 2001   Raphael Manfredi <Raphael_Manfredi@pobox.com>
-+  - where practical, padding is now cleared when emitting a long
-+    double (perl #131136)
- 
--        Last version was wrongly compiling with assertions on, due
--        to an edit glitch.  That did not cause any problem (apart from
--        a slight performance loss) excepted on Win* platforms, where the
--        assertion code does not compile.
-+  - cache the value of $Storable::DEBUGME (since cperl enabled
-+    Storable TRACEME builds for all -DDEBUGGING builds)
- 
--Sat Feb 17 13:37:37 MET 2001   Raphael Manfredi <Raphael_Manfredi@pobox.com>
-+  - no longer discard exceptions thrown by
-+    STORABLE_freeze/_thaw/attach() (perl #25933)
- 
--    Version 1.0.10.
-+  - fix dependencies used to build Storable.pm from __Storable__.pm
- 
--        Forgot to increase version number at previous patch (there were
--        two of them, which is why we jump from 1.0.8 to 1.0.10).
-+  - add experimental support for freezing/thawing regular
-+    expressions (perl #50608)
- 
--Sat Feb 17 13:35:00 MET 2001   Raphael Manfredi <Raphael_Manfredi@pobox.com>
-+  - re-work recursion limiting to store the limit in a perl variable
-+    instead of baked into Storable.$so.  This allows static Storable
-+    builds to work, and avoids the kind of circular reference on
-+    Storable.$so.
- 
--    Version 1.0.8, binary format 2.4.
-+3.05_13 - 2017-07-24 13:57:13 rurban
- 
--        Fixed incorrect error message.
-+  - mingw fix: use safe defaults, not segfaulting defaults.
-+    mingw fails on the stacksize binary search, leaving it empty.
- 
--        Now bless objects ASAP at retrieve time, which is meant to fix
--        two bugs:
-+3.05_12 - Wed Apr 19 09:11:07 2017 +0200 Reini Urban <rurban@cpan.org>
- 
--        * Indirect references to overloaded object were not able to
--          restore overloading if the object was not blessed yet,
--          which was possible since blessing occurred only after the
--          recursive retrieval.
-+  - enhance stack reserve from 8 to 16
- 
--        * Storable hooks asking for serialization of blessed ref could
--          get un-blessed refs at retrieval time, for the very same
--          reason.
-+  - fix LD_LIBRARY_PATH usage for CORE
- 
--        The fix implemented here was suggested by Nick Ing-Simmons.
-+  - fixed some coverity warnings and leaks
- 
--        Added support for blessed ref to tied structures.  This is the
--        cause for the binary format change.
-+  - added a release make target
- 
--        Added EBCDIC version of the compatibility test with 0.6.11,
--        from Peter Prymmer
-+3.05_11 - Wed Mar 29 21:04:28 2017 +0200 Reini Urban <rurban@cpan.org>
- 
--        Added tests for the new features, and to make sure the bugs they
--        are meant to fix are indeed fixed.
-+  - croak on sizes read > I32_MAX
- 
--Wed Jan  3 10:43:18 MET 2001   Raphael Manfredi <Raphael_Manfredi@pobox.com>
-+  - simplify last_op_in_netorder
- 
--        Removed spurious 'clean' entry in Makefile.PL.
-+  - protect from empty retrieve_vstring
- 
--        Added CAN_FLOCK to determine whether we can flock() or not,
--        by inspecting Perl's configuration parameters, as determined
--        by Configure.
-+  - protect store_other error buf, potential static
-+    buffer overflow.
- 
--        Trace offending package when overloading cannot be restored
--        on a scalar.
-+3.05_10 - Tue Mar 14 09:52:20 2017 +0100 Reini Urban <rurban@cpan.org>
- 
--        Made context cleanup safer to avoid dup freeing, mostly in the
--        presence of repeated exceptions during store/retrieve (which can
--        cause memory leaks anyway, so it's just additional safety, not a
--        definite fix).
-+  - CORE-only improvements to stacksize
- 
--Sun Nov  5 18:23:48 MET 2000   Raphael Manfredi <Raphael_Manfredi@pobox.com>
-+3.05_09 - Thu Mar 9 19:20:19 2017 +0100 Reini Urban <rurban@cpan.org>
- 
--    Version 1.0.6.
-+  - compute the stacksizes, improve cleanup within croak
-+    from stack exhaustion.
- 
--        Fixed severe "object lost" bug for STORABLE_freeze returns,
--        when refs to lexicals, taken within the hook, were to be
--        serialized by Storable.  Enhanced the t/recurse.t test to
--        stress hook a little more with refs to lexicals.
-+  - added stack_depth and stack_depth_hash getters.
- 
--Thu Oct 26 19:14:38 MEST 2000   Raphael Manfredi <Raphael_Manfredi@pobox.com>
-+3.05_08 - Wed Mar  8 21:03:43 CET 2017 Reini Urban <rurban@cpan.org>
- 
--    Version 1.0.5.
-+  - finetune the max stack limit, for C++, DEBUGGING and 32bit.
- 
--        Documented that store() and retrieve() can return undef.
--        That is, the error reporting is not always made via exceptions,
--        as the paragraph on error reporting was implying.
-+  - fix t/blessed.t for cperl5.22
- 
--        Auto requires module of blessed ref when STORABLE_thaw misses.
--        When the Storable engine looks for the STORABLE_thaw hook and
--        does not find it, it now tries to require the package into which
--        the blessed reference is.
-+3.05_07 - Sun Mar 5 13:36:47 2017 +0100 Reini Urban <rurban@cpan.org>
- 
--        Just check $^O, in t/lock.t: there's no need to pull the whole
--        Config module for that.
-+  - Fixed a podchecker issue
- 
--Mon Oct 23 20:03:49 MEST 2000   Raphael Manfredi <Raphael_Manfredi@pobox.com>
-+3.05_06 - Sun Mar 5 11:42:04 2017 +0100 Reini Urban <rurban@cpan.org>
- 
--    Version 1.0.4.
-+  - Fixed wrong recursion depth error with large arrays containing
-+    another array. L<[cperl #257]|https://github.com/perl11/cperl/issues/257>
- 
--        Protected calls to flock() for DOS platform: apparently, the
--        flock/fcnlt emulation is reported to be broken on that
--        platform.
-+3.05_05 - Thu Feb 2 12:40:44 2017 +0100 Reini Urban <rurban@cpanel.net>
- 
--        Added logcarp emulation if they don't have Log::Agent, since
--        we now use it to carp when lock_store/lock_retrieve is used
--        on DOS.
-+  - Add leak tests for [cpan #97316], [perl #121928]
- 
--Fri Sep 29 21:52:29 MEST 2000   Raphael Manfredi <Raphael_Manfredi@pobox.com>
-+  - Limit the max recursion depth to 1200 on 32bit systems.
-+    We have no max_depth option yet, as in JSON::XS.
- 
--    Version 1.0.3.
-+3.05_04 - Thu Feb 2 11:59:21 2017 +0100 Reini Urban <rurban@cpanel.net>
- 
--        Avoid using "tainted" and "dirty" since Perl remaps them via
--        cpp (i.e. #define).  This is deeply harmful when threading
--        is enabled.  This concerned both the context structure and
--        local variable and argument names.  Brrr..., scary!
-+  - Fix retrieve_tied_array which fails since 5.16
-+    [cpan #84705]
- 
--Thu Sep 28 23:46:39 MEST 2000   Raphael Manfredi <Raphael_Manfredi@pobox.com>
-+  - Improve t/blessed.t in the creation of sv_yes/sv_no
-+    with threaded perls.
- 
--    Version 1.0.2.
-+3.05_03 - Tue Jan 31 02:55:30 2017 +0100 Reini Urban <rurban@cpanel.net>
- 
--        Fixed spelling in README.
-+  - Tune t/recurse.t stack-overflow limit more.
- 
--        Added lock_store, lock_nstore, and lock_retrieve (advisory locking)
--        after a proposal from Erik Haugan <erik@solbors.no>.
-+3.05_02 - Mon Jan 30 19:50:29 2017 +0100 Reini Urban <rurban@cpanel.net>
- 
--        Perls before 5.004_04 lack newSVpvn, added remapping in XS.
-+  - Tune t/recurse.t stack-overflow limit. Small 64bit systems overflow
-+    even with depth 3000, where 32bit are ok.
- 
--        Fixed stupid typo in the t/utf8.t test.
-+3.05_01 - Mon Jan 30 15:13:38 2017 +0100 Reini Urban <rurban@cpanel.net>
- 
--Sun Sep 17 18:51:10 MEST 2000   Raphael Manfredi <Raphael_Manfredi@pobox.com>
-+  - Protect against stack overflows with nested arrays and hashes
-+    [cpan #97526]. This imposes a new limit to your nested structures,
-+    but JSON::XS has a limit of 512. We use a max_depth of 3000 for the
-+    typical stack limit of 8k.
- 
--    Version 1.0.1, binary format 2.3.
-+3.05 - Sun Jan 29 11:36:43 2017 +0100 Reini Urban <rurban@cpanel.net>
- 
--        Documented that doubles are stored stringified by nstore().
-+  - Protect against classname len overflow on the stack
-+    and 2x on the heap with retrieve_bless and retrieve_hook.
-+    A serious security issue with malcrafted storable files or buffers,
-+    but p5p accepts no CVE on Storable attacks. See RT #130635
-+    (reported by JD).
- 
--        Added Salvador Ortiz Garcia in CREDITS section,  He identified
--        a bug in the store hooks and proposed the right fix: the class
--        id was allocated too soon.  His bug case was also added to
--        the regression test suite.
-+  - Fix NULL ptr SEGVs with retrieve_code and retrieve_other.
-+    See RT #130098 (reported and fixed by JD)
- 
--        Now only taint retrieved data when source was tainted.  A bug
--        discovered by Marc Lehmann.
-+  - Fix wrong huge LOBJECT support, broken since 3.00c.
-+    Repro with `export PERL_TEST_MEMORY=8`
- 
--        Added support for UTF-8 strings, a contribution of Marc Lehmann.
--        This is normally only activated in post-5.6 perls.
-+  - Fix the few remaining 2-arg open calls.
- 
--Thu Aug 31 23:06:06 MEST 2000   Raphael Manfredi <Raphael_Manfredi@pobox.com>
-+  - Portability and backport fixes back to 5.6.2
- 
--        First official release Storable 1.0, for inclusion in perl 5.7.0.
--        The license scheme is now compatible with Perl's.
-+3.04c - Sat Jan 7 09:01:29 2017 +0100 Reini Urban <rurban@cpanel.net>
- 
--Thu Aug 24 01:02:02 MEST 2000   Raphael Manfredi <Raphael_Manfredi@pobox.com>
-+  - fix printf types and warnings, esp. for 32bit use64bitint
- 
--        ANSI-fied most of the code, preparing for Perl core integration.
--        The next version of Storable will be 0.8, and will be integrated
--        into the Perl core (development branch).
-+  - Change sv_setpvn(…, "…", …) to sv_setpvs(…, "…")
- 
--        Dispatch tables were moved upfront to relieve some compilers,
--        especially on AIX and Windows platforms.
-+3.03c - Tue Jul 26 11:49:33 2016 +1000 Tony Cook <tony@develop-help.com>
- 
--        Merged 64-bit fixes from perl5-porters.
-+  - remove . from @INC when loading optional modules
- 
--Mon Aug 14 09:22:04 MEST 2000   Raphael Manfredi <Raphael_Manfredi@pobox.com>
-+3.02c - Sun Nov 20 18:06:45 2016 +0100 Reini Urban <rurban@cpanel.net>
- 
--        Added a refcnt dec in retrieve_tied_key(): sv_magic() increases
--        the refcnt on the mg_ptr as well.
-+  - Fix -Wc++11-compat warnings, fix -Wchar-subscripts
- 
--        Removed spurious dependency to Devel::Peek, which was used for
--        testing only in t/tied_items.t.  Thanks to Conrad Heiney
--        <conrad@fringehead.org> for spotting it first.
-+3.01c - Fri Sep 16 01:32:59 2016 +0200 Reini Urban <rurban@cpanel.net>
- 
--Sun Aug 13 22:12:59 MEST 2000   Raphael Manfredi <Raphael_Manfredi@pobox.com>
-+  - Added warn_security("Movable-Type CVE-2015-1592 Storable metasploit attack")
-+    when detecting the third destructive metasploit vector,
-+    thawing bless \"mt-config.cgi", "CGITempFile".
- 
--        Marc Lehmann kindly contributed code to add overloading support
--        and to handle references to tied variables.
-+3.00c - Thu Mar 31 17:10:27 2016 +0200 Reini Urban <rurban@cpanel.net>
- 
--        Rewrote leading blurb about compatibility to make it clearer what
--        "backward compatibility" is about: when I say 0.7 is backward
--        compatible with 0.6, it means the revision 0.7 can read files
--        produced by 0.6.
-+  - Added support for u64 strings, arrays and hashes >2G
-+    via a new LOBJECT tag. This is for 32bit systems and lengths
-+    between 2GB and 4GB (I32-U32), and 64bit (>I32).
- 
--        Mention new Clone(3) extension in SEE ALSO.
-+  - Bumped STORABLE_BIN_MINOR and STORABLE_BIN_WRITE_MINOR from 10 to 11
- 
--        Was wrongly optimizing for "undef" values in hashes by not
--        fully recursing: as a result, tied "undef" values were incorrectly
--        serialized.
-+  - fix parallel tests, use unique filenames.
- 
--Sun Jul 30 12:59:17 MEST 2000   Raphael Manfredi <Raphael_Manfredi@pobox.com>
-+  - fixed 2 instances of 2arg open,
- 
--    First revision of Storable 0.7.
-+  - added optional flag arguments to skip tie and bless on retrieve/thaw,
- 
--        The serializing format is new, known as version 2.0.  It is fully
--        backward compatible with 0.6.  Earlier formats are deprecated and
--        have not even been tested: next version will drop pre-0.6 format.
-+  - added SECURITY WARNING and Large data support to docs
- 
--        Changes since 0.6@11:
-+  - compute CAN_FLOCK at compile-time
- 
--        - Moved interface to the "beta" status.  Some tiny parts are still
--          subject to change, but nothing important enough to warrant an "alpha"
--          status any longer.
-+  - reformat everything consistently
- 
--        - Slightly reduced the size of the Storable image by factorizing
--          object class names and removing final object storage notification due
--          to a redesign of the blessed object storing.
-+  - enable DEBUGME tracing and asserts with -DDEBUGGING
- 
--        - Classes can now redefine how they wish their instances to be serialized
--          and/or deep cloned.  Serializing hooks are written in Perl code.
-+  - fix all 64 bit compiler warnings
- 
--        - The engine is now fully re-entrant.
-+  - added some abstraction methods to avoid code duplication
- 
--Sun Apr  2 23:47:50 MEST 2000   Raphael Manfredi <Raphael_Manfredi@pobox.com>
-+2.65 - unreleased
- 
--        Added provision to detect more recent binary formats, since
--        the new upcoming Storable-0.7 will use a different format.
--        In order to prevent attempting the de-serialization of newer
--        formats by older versions, I'm adding this now to the 0.6 series.
-+  - Replace multiple 'use vars' by 'our'
- 
--        I'm expecting this revision to be the last of the 0.6 series.
--        Unless it does not work with perl 5.6, which I don't use yet,
--        and therefore against which I cannot test.
-+  - remove Config dependency
- 
--Wed Mar 29 19:55:21 MEST 2000   Raphael Manfredi <Raphael_Manfredi@pobox.com>
-+2.51 - Wed Jul  2 16:25:25 IST 2014   Abhijit Menon-Sen <ams@toroid.org>
- 
--        Added note about format incompatibilities with old versions
--        (i.e. pre 0.5@9 formats, which cannot be understood as there
--        was no versionning information in the file by then).
-+  - [perl #121928] Fix memory leak for dclone inside freeze hook
-+    (Alex Solovey)
- 
--        Protect all $@ variables when eval {} used, to avoid corrupting
--        it when store/retrieve is called within an exception handler.
-+  - Do not call DESTROY for empty objects
-+    (Vladimir Timofeev)
- 
--        Mistakenly included "patchlevel.h" instead of <patchlevel.h>,
--        preventing Perl's patchlevel from being included, which is
--        needed starting from 5.6.
-+  - Other bugfixes
- 
--Tue May 12 09:15:15 METDST 1998   Raphael Manfredi <Raphael_Manfredi@grenoble.hp.com>
-+2.45 - Sat Jul 13 18:34:27 IST 2013   Abhijit Menon-Sen <ams@toroid.org>
- 
--        Fixed shared "undef" bug in hashes, which did not remain shared
--        through store/retrieve.
-+  - [perl #118829] Memory leaks in STORABLE_attach
-+    (Vladimir Timofeev)
- 
--Thu Feb 10 19:48:16 MET 2000   Raphael Manfredi <Raphael_Manfredi@pobox.com>
-+  - [perl #118139] Don't SEGV during global destruction
-+    (Nicholas Clark, report/test from Reini Urban)
- 
--        added last_op_in_netorder() predicate
--        documented last_op_in_netorder()
--        added tests for the new last_op_in_netorder() predicate
-+  - Added security warnings section (Steffen Mueller)
- 
--Wed Oct 20 19:07:36 MEST 1999   Raphael Manfredi <Raphael_Manfredi@pobox.com>
-+  - Update INSTALLDIRS to favour installation in 'site'
-+    (James E Keenan)
- 
--        Forgot to update VERSION
-+2.39 - Tue 11 Sep 06:51:11 IST 2012   Abhijit Menon-Sen <ams@toroid.org>
- 
--Tue Oct 19 21:25:02 MEST 1999   Raphael Manfredi <Raphael_Manfredi@pobox.com>
-+  - Various bugfixes, including compatibility fixes for older versions of Perl
-+    and vstring handling.
- 
--        Added mention of japanese translation for the manual page.
-+2.29 - Sun  3 Jul 09:10:11 IST 2011   Abhijit Menon-Sen <ams@toroid.org>
- 
--        Fixed typo in macro that made threaded code not compilable,
--        especially on Win32 platforms.
-+  - Various bugfixes, notably including preventing nfreeze from incorrectly
-+    stringifying integers.
- 
--        Changed detection of older perls (pre-5.005) by testing PATCHLEVEL
--        directly instead of relying on internal symbols.
-+2.25 - Fri  3 Dec 14:12:32 GMT 2010   David Leadbeater <dgl@dgl.cx>
- 
--Tue Sep 14 22:13:28 MEST 1999   Raphael Manfredi <Raphael_Manfredi@pobox.com>
-+  - Support for serializing coderefs containing UTF-8.
- 
--        Integrated "thread-safe" patch from Murray Nesbitt.
--        Note that this may not be very efficient for threaded code,
--        see comment in the code.
-+2.24 - Fri Nov 12 10:52:19 IST 2010   Abhijit Menon-Sen <ams@toroid.org>
- 
--        Try to avoid compilation warning on 64-bit CPUs. Can't test it,
--        since I don't have access to such machines.
-+  - Performance improvement for overloaded classes from Benjamin Holzman.
- 
--Mon Jul 12 14:37:19 METDST 1999   Raphael Manfredi <Raphael_Manfredi@pobox.com>
-+2.23 - Fri Nov 12 10:36:22 IST 2010   Abhijit Menon-Sen <ams@toroid.org>
- 
--        changed my e-mail to pobox.
-+  - Release the latest version from the Perl repository.
- 
--        mentioned it is not thread-safe.
-+2.21 - Thu Aug  6 10:55:50 IST 2009   Abhijit Menon-Sen <ams@toroid.org>
- 
--        updated version number.
-+  - Includes hints/hpux.pl that was inadvertently left out of 2.20.
- 
--        uses new internal PL_* naming convention.
-+2.20 - Mon May 18 09:38:20 IST 2009   Abhijit Menon-Sen <ams@toroid.org>
- 
--Fri Jul  3 13:38:16 METDST 1998   Raphael Manfredi <Raphael_Manfredi@grenoble.hp.com>
-+  - Fix bug handling blessed references to overloaded objects, plus other
-+    miscellaneous fixes.
- 
--        Updated benchmark figures due to recent optimizations done in
--        store(): tagnums are now stored as-is in the hash table, so
--        no surrounding SV is created. And the "shared keys" mode for
--        hash table was turned off.
-+2.19
- 
--        Fixed backward compatibility (wrt 0.5@9) for retrieval of
--        blessed refs. That old version did something wrong, but the
--        bugfix prevented correct retrieval of the old format.
-+  - released with perl 5.8.9.
- 
--Mon Jun 22 11:00:48 METDST 1998   Raphael Manfredi <Raphael_Manfredi@grenoble.hp.com>
-+2.18 - Thu Nov 22 13:24:18 IST 2007   Abhijit Menon-Sen <ams@toroid.org>
- 
--        Changed benchmark figures.
-+  - Compile fixes for older Perls. (No functional changes.)
- 
--        Adjust refcnt of tied objects after calling sv_magic() to avoid
--        memory leaks.  Contributed by Jeff Gresham.
-+2.17 - Sat Nov 17 02:12:12 IST 2007   Abhijit Menon-Sen <ams@toroid.org>
- 
--Fri Jun 12 11:50:04 METDST 1998   Raphael Manfredi <Raphael_Manfredi@grenoble.hp.com>
-+  - Various broken tests fixed. (No functional changes.)
- 
--        Added workaround for persistent LVALUE-ness in perl5.004. All
--        scalars tagged as being an lvalue are handled as if they were
--        not an lvalue at all.  Added test for that LVALUE bug workaround.
-+2.16 - Sat Mar 31 06:11:06 IST 2007   Abhijit Menon-Sen <ams@toroid.org>
- 
--        Now handles Perl immortal scalars explicitly, by storing &sv_yes
--        as such, explicitly.
-+  - Fixes to Storable::dclone, read_magic, retrieve_lscalar
- 
--        Retrieval of non-immortal undef cannot be shared. Previous
--        version was over-optimizing by not creating a separate SV for
--        all undefined scalars seen.
-+  - Storable 0.1 compatibility
- 
--Thu Jun  4 17:21:51 METDST 1998   Raphael Manfredi <Raphael_Manfredi@grenoble.hp.com>
-+  - Miscellaneous compile/leak/test/portability fixes
- 
--    Baseline for Storable-0.6@0.
-+2.15 - Mon May 23 22:48:49 IST 2005   Abhijit Menon-Sen <ams@wiw.org>
- 
--        This version introduces a binary incompatibility in the generated
--        binary image, which is more compact than older ones by approximatively
--        15%, depending on the exact degree of sharing in your structures.
-+  - Minor changes to address a couple of compile problems.
- 
--        The good news is that your older images can still be retrieved with
--        this version, i.e. backward compatibility is preserved. This version
--        of Storable can only generate new binaries however.
-+2.14 - Mon Apr 25 07:29:14 IST 2005   Abhijit Menon-Sen <ams@wiw.org>
- 
--        Another good news is that the retrieval of data structure is
--        significantly quicker than before, because a Perl array is used
--        instead of a hash table to keep track of retrieved objects, and
--        also because the image being smaller, less I/O function calls are
--        made.
-+  - Store weak references
- 
--Tue May 12 09:15:15 METDST 1998   Raphael Manfredi <Raphael_Manfredi@grenoble.hp.com>
-+  - Add STORABLE_attach hook.
- 
--        Version number now got from Storable.pm directly.
-+2.13 - Thu Jun 17 12:26:43 BST 2004   Nicholas Clark <nick@ccl4.org>
- 
--        Fixed overzealous sv_type() optimization, which would make
--        Storable fail when faced with an "upgraded" SV to the PVIV
--        or PVNV kind containing a reference.
-+  - Don't change the type of top level overloaded references to RV -
-+    they are perfectly correct as PVMG
- 
--Thu Apr 30 15:11:30 METDST 1998   Raphael Manfredi <Raphael_Manfredi@grenoble.hp.com>
-+  - Storable needs to cope with incoming frozen data that happens to be
-+    utf8 encoded.
- 
--        Extended the SYNOPSIS section to give quick overview of the
--        routines and their signature.
-+2.12 - Wed Mar 17 15:40:29 GMT 2004   Nicholas Clark <nick@ccl4.org>
- 
--        Optimized sv_type() to avoid flags checking when not needed, i.e.
--        when their type makes it impossible for them to be refs or tied.
--        This slightly increases throughput by a few percents when refs
--        and tied variables are marginal occurrences in your data.
-+  - Add regression tests for the auto-require of STORABLE_thaw
- 
--        Stubs for XS now use OutputStream and InputStream file types to
--        make it work when the given file is actually a socket. Perl
--        makes a distinction for sockets in its internal I/O structures
--        by having both a read and a write structure, whereas plain files
--        share the same one.
-+  - Add auto-require of modules to restore overloading (and tests)
- 
--Tue Jun  3 09:41:33 METDST 1997   Raphael Manfredi <Raphael_Manfredi@grenoble.hp.com>
-+  - Change to no context (should give speedup with ithreads)
- 
--        Thanks to a contribution from Benjamin A. Holzman, Storable is now
--        able to correctly serialize tied SVs, i.e. tied arrays, hashes
--        and scalars.
-+2.11 - Sat Mar 13 20:11:03 GMT 2004   Nicholas Clark <nick@ccl4.org>
- 
--Thu Apr  9 18:07:51 METDST 1998   Raphael Manfredi <Raphael_Manfredi@grenoble.hp.com>
-+  - Storing restricted hashes in canonical order would SEGV. Fixed.
- 
--        I said SvPOK() had changed to SvPOKp(), but that was a lie...
-+  - It was impossible to retrieve references to PL_sv_no and
-+    PL_sv_undef from STORABLE_thaw hooks.
- 
--Wed Apr  8 13:14:29 METDST 1998   Raphael Manfredi <Raphael_Manfredi@grenoble.hp.com>
-+  - restrict.t was failing on 5.8.0, due to 5.8.0's unique
-+    implementation of restricted hashes using PL_sv_undef
- 
--        Wrote sizeof(SV *) instead of sizeof(I32) when portable, which
--        in effect mangled the object tags and prevented portability
--        across 32/64 bit architectures!
-+  - These changes allow a space optimisation for restricted hashes.
- 
--Wed Mar 25 14:57:02 MET 1998   Raphael Manfredi <Raphael_Manfredi@grenoble.hp.com>
-+2.10 - Sat Jan 24 16:22:32 IST 2004   Abhijit Menon-Sen <ams@wiw.org>
- 
--        Added code example for store_fd() and retrieve_fd() in the
--        man page, to emphasize that file descriptors must be passed as
--        globs, not as plain strings.
-+  - Thread safety: Storable::CLONE/init_perlinterp() now create
-+    a new Perl context for each new ithread.
-+    (From Stas Bekman and Jan Dubois.)
- 
--        Cannot use SV addresses as tag when using nstore() on LP64. This
--        was the cause of problems when creating a storable image on an
--        LP64 machine and retrieving it on an ILP32 system, which is
--        exactly what nstore() is meant for...
-+  - Fix a tag count mismatch with $Storable::Deparse that caused
-+    all back-references after a stored sub to be off-by-N (where
-+    N was the number of code references in between).
-+    (From Sam Vilain.)
- 
--        However, we continue to use SV addresses as tags for plain store(),
--        because benchmarking shows that it saves up to 8% of the store
--        time, and store() is meant to be fast at the expense of lack
--        of portability.
-+  - Prevent CODE references from turning into SCALAR references.
-+    (From Slaven Rezic.)
- 
--        This means there will be approximately an 8% degradation of
--        performance for nstore(), but it's now working as expected.
--        That cost may vary on your machine of course, since it is
--        solely caused by the memory allocation overhead used to create
--        unique SV tags for each distinct stored SV.
-+2.09 - Sat Jan  3 18:49:18 GMT 2004   Nicholas Clark <nick@ccl4.org>
- 
--Tue Jan 20 09:21:53 MET 1998   Raphael Manfredi <Raphael_Manfredi@grenoble.hp.com>
-+  - Fix minor problems with the CPAN release
- 
--        Don't use any '_' in version number.
-+  - Make Storable.xs work on 5.8.2 and later (already in the core)
- 
--Tue Jan 13 17:51:50 MET 1998   Raphael Manfredi <Raphael_Manfredi@grenoble.hp.com>
-+  - Ship the linux hints file
- 
--        Updated version number.
-+  - Ship Test::More for the benefit of Perls pre 5.6.2
- 
--        added binmode() calls for systems where it matters.
-+  - Correct Makefile.PL to only install in core for 5.8.0 and later
- 
--        Be sure to pass globs, not plain file strings, to C routines,
--        so that Storable can be used under the Perl debugger.
-+2.08 - Sat Sep  6 01:08:20 IST 2003   Abhijit Menon-Sen <ams@wiw.org>
- 
--Wed Nov  5 10:53:22 MET 1997   Raphael Manfredi <Raphael_Manfredi@grenoble.hp.com>
-+  - This release works around a 5.8.0 bug which caused hashes to not
-+    be marked as having key flags even though an HEK had HEK_WASUTF8
-+    set. (Note that the only reasonable solution is to silently drop
-+    the flag from the affected key.)
- 
--        Fix memory leaks on seen hash table and returned SV refs.
-+  - Users of RT 3 who were seeing assertion failures should upgrade.
-+    (Perl 5.8.1 will have the bug fixed.)
- 
--        Storable did not work properly when tainting enabled.
-+2.07 - Mon May  5 10:24:16 IST 2003   Abhijit Menon-Sen <ams@wiw.org>
- 
--        Fixed "Allocation too large" messages in freeze/thaw and added.
--        proper regression test in t/freeze.t.
-+  - Minor bugfixes (self-tied objects are now correctly stored, as
-+    are the results of additions larger than INT_MAX).
- 
--Tue Jun  3 09:41:33 METDST 1997   Raphael Manfredi <Raphael_Manfredi@grenoble.hp.com>
-+2.06 - Mon Oct  7 21:56:38 BST 2002   Nicholas Clark  <nick@ccl4.org>
- 
--        Updated version number
-+  - Remove qr// from t/downgrade.t so that it will run on 5.004
- 
--        Added freeze/thaw interface and dclone.
-+  - Mention $File::Spec::VERSION a second time in t/forgive.t so that it
-+    runs without warnings in 5.004 (this may be a 5.00405 bug I'm working
-+    round)
- 
--Fri May 16 10:45:47 METDST 1997   Raphael Manfredi <Raphael_Manfredi@grenoble.hp.com>
-+  - Fix t/integer.t initialisation to actually generate 64 bits of 9c
- 
--        Forgot that AutoLoader does not export its own AUTOLOAD.
--        I could use
-+  - Fix comparison tests to use eval to get around 64 bit IV conversion
-+    issues on 5.6.x, following my t/integer.t ^ precedence bug found by
-+    Rafael Garcia-Suarez
- 
--                use AutoLoader 'AUTOLOAD';
--        
--        but that would not be backward compatible. So the export is
--        done by hand...
-+  - Alter t/malice.t to work with Test/More.pm in t/, and skip individual
-+    subtests that use $Config{ptrsize}, so that the rest of the test can
-+    now be run with 5.004
- 
--Tue Mar 25 11:21:32 MET 1997   Raphael Manfredi <Raphael_Manfredi@grenoble.hp.com>
-+  - Change t/malice.t and the error message in check_magic in Storable.xs
-+    from "Pointer integer size" to "Pointer size"
- 
--        Empty scalar strings are now "defined" at retrieval time.
-+  - Remove prerequisite of Test::More from Makefile.PL
- 
--        New test to ensure an empty string is defined when retrieved.
-+  - Ship Test::Builder, Test::Simple and Test::More in t
- 
--Thu Feb 27 16:32:44 MET 1997   Raphael Manfredi <Raphael_Manfredi@grenoble.hp.com>
-+2.05 - Thu Oct  3 08:57:22 IST 2002   Abhijit Menon-Sen <ams@wiw.org>
- 
--        Updated version number
-+  - Adds support for CODE references from Slaven Rezic
-+    <slaven.rezic@berlin.de>.
- 
--        Declare VERSION as being used
-+2.04 - Fri Jun  7 23:55:41 BST 2002   Nicholas Clark
- 
--        Fixed a typo in the PerlIO_putc remapping.
--        PerlIO_read and perlIO_write inverted size/nb_items.
--        (only relevant for pre-perl5.004 versions)
-+  - Bug fix from Radu Greab <radu@netsoft.ro> (plus regression test)
-+    to fix a recently introduced bug detected by Dave Rolsky.
-+    Bug was that for a non threaded build, the class information was
-+    being lost at freeze time on the first object with a STORABLE_freeze
-+    hook. Consequentially the object was not blessed at all when thawed.
-+    (The presence (or lack) of STORABLE_thaw was irrelevant; this was
-+    a store-time data lost bug, caused by failure to initialize internal
-+    context)
-+    The bug was introduced as development perl change 16442 (on
-+    2002/05/07), so has been present since 2.00.
-+    Patches to introduce more regression tests to reduce the chance of
-+    a reoccurrence of this sort of goof are always welcome.
- 
--Thu Feb 27 15:58:31 MET 1997   Raphael Manfredi <Raphael_Manfredi@grenoble.hp.com>
-+2.03 - Thu May 30 20:31:08 BST 2002   Nicholas Clark <nick@ccl4.org>
- 
--        Updated version number
-+  - Header changes on 5.6.x on Unix where IV is long long
- 
--        Added VERSION identification
-+    5.6.x introduced the ability to have IVs as long long.  However,
-+    Configure still defined BYTEORDER based on the size of a long.
-+    Storable uses the BYTEORDER value as part of the header, but
-+    doesn't explicitly store sizeof(IV) anywhere in the header.
-+    Hence on 5.6.x built with IV as long long on a platform that
-+    uses Configure (ie most things except VMS and Windows) headers
-+    are identical for the different IV sizes, despite the files
-+    containing some fields based on sizeof(IV)
- 
--        Allow build with perl5.003, which is ante perlIO time
-+    5.8.0 is consistent; all platforms have BYTEORDER in config.h
-+    based on sizeof(IV) rather than sizeof(long).  This means that
-+    the value of BYTEORDER will change from (say) 4321 to 87654321
-+    between 5.6.1 and 5.8.0 built with the same options to Configure
-+    on the same machine.  This means that the Storable header will
-+    differ, and the two versions will wrongly thing that they are
-+    incompatible.
- 
--Mon Jan 13 17:53:18 MET 1997   Raphael Manfredi <Raphael_Manfredi@grenoble.hp.com>
-+    For the benefit of long term consistency, Storable now
-+    implements the 5.8.0 BYTEORDER policy on 5.6.x.  This means that
-+    2.03 onwards default to be incompatible with 2.02 and earlier
-+    (ie the large 1.0.x installed base) on the same 5.6.x perl.
- 
--        Random code fixes.
-+    To allow interworking, a new variable
-+    $Storable::interwork_56_64bit is introduced. It defaults to
-+    false. Set it to true to read and write old format files. Don't
-+    use it unless you have existing stored data written with 5.6.x
-+    that you couldn't otherwise read, or you need to interwork with
-+    a machine running older Storable on a 5.6.x with long long IVs
-+    (i.e., you probably don't need to use it).
- 
--Wed Jan 22 15:19:56 MET 1997   Raphael Manfredi <Raphael_Manfredi@grenoble.hp.com>
-+2.02 - Sat May 25 22:38:39 BST 2002   Nicholas Clark <nick@ccl4.org>
- 
--        Updated version number in Makefile.PL.
-+  - Rewrite Storable.xs so that the file header structure for write_magic
-+    is built at compile time, and check_magic attempts to the header in
-+    blocks rather than byte per byte. These changes make the compiled
-+    extension 2.25% smaller, but are not significant enough to give a
-+    noticeable speed up.
- 
--        Added "thanks to" section to README.
-+2.01 - Thu May 23 22:50:41 BST 2002   Nicholas Clark <nick@ccl4.org>
- 
--        Documented new forgive_me variable.
-+  - New regression tests integer.t
- 
--        Made 64-bit clean.
-+  - Add code to safely store large unsigned integers.
- 
--        Added forgive_me support to allow store() of data structures
--        containing non-storable items like CODE refs.
-+  - Change code not to attempt to store large integers (ie > 32 bits)
-+    in network order as 32 bits.
-+
-+  - *Never* underestimate the value of a pathological test suite carefully
-+    crafted with maximum malice before writing a line of real code. It
-+    prevents crafty bugs from stowing away in your released code.
-+    It's much less embarrassing to find them before you ship.
-+    (Well, never underestimate it if you ever want to work for me)
-+
-+2.0 - Fri May 17 22:48:59 BST 2002   Nicholas Clark <nick@ccl4.org>
-+
-+  - binary format 2.5 (but writes format 2.4 on pre 5.7.3)
-+
-+    The perl5 porters have decided to make sure that Storable still
-+    builds on pre-5.8 perls, and make the 5.8 version available on CPAN.
-+    The VERSION is now 2.0, and it passes all tests on 5.005_03, 5.6.1
-+    and 5.6.1 with threads. On 5.6.0 t/downgrade.t fails tests 34 and 37,
-+    due to a bug in 5.6.0 - upgrade to 5.6.1.
-+
-+  - Jarkko and I have collated the list of changes the perl5 porters have
-+    from the perl5 Changes file:
-+
-+    - data features of upcoming perl 5.8.0 are supported: Unicode hash
-+      keys (Unicode hash values have been supported since Storable 1.0.1)
-+      and "restricted hashes" (readonly hashes and hash entries)
-+
-+    - a newer version of perl can now be used to serialize data which is
-+      not supported in earlier perls: Storable will attempt to do the
-+      right thing for as long as possible, croaking only when safe data
-+      conversion simply isn't possible. Alternatively earlier perls can
-+      opt to have a lossy downgrade data instead of croaking
-+
-+    - when built with perls pre 5.7.3 this Storable writes out files
-+      with binary format 2.4, the same format as Storable 1.0.8 onwards.
-+      This should mean that this Storable will inter-operate seamlessly
-+      with any Storable 1.0.8 or newer on perls pre 5.7.3
-+
-+    - dclone() now works with empty string scalar objects
-+
-+    - retrieving of large hashes is now more efficient
-+
-+    - more routines autosplit out of the main module, so Storable should
-+      load slightly more quickly
-+
-+    - better documentation
-+
-+    - the internal context objects are now freed explicitly, rather than
-+      relying on thread or process exit
-+
-+    - bugs fixed in debugging trace code affecting builds made with 64 bit
-+      IVs
-+
-+    - code tidy-ups to allow clean compiles with more warning options
-+      turned on avoid problems with $@ getting corrupted on 5.005_03 if
-+      Carp wasn't already loaded
-+
-+    - added &show_file_magic, so you can add to /etc/magic and teach
-+      Unix's file command about Storable files
-+
-+  - We plan to keep Storable on CPAN in sync with the Perl core, so
-+    if you encounter bugs or other problems building or using Storable,
-+    please let us know at perl5-porters@perl.org
-+    Patches welcome!
-+
-+1.014 - Sat Dec  1 14:37:54 MET 2001   Raphael Manfredi <Raphael_Manfredi@pobox.com>
-+
-+  - This is the LAST maintenance release of the Storable module.
-+    Indeed, Storable is now part of perl 5.8, and will be maintained
-+    as part of Perl.  The CPAN module will remain available there
-+    for people running pre-5.8 perls.
-+
-+  - Avoid requiring Fcntl upfront, useful to embedded runtimes.
-+    Use an eval {} for testing, instead of making Storable.pm
-+    simply fail its compilation in the BEGIN block.
-+
-+  - store_fd() will now correctly autoflush file if needed.
-+
-+1.013 - Tue Aug 28 23:53:20 MEST 2001   Raphael Manfredi <Raphael_Manfredi@pobox.com>
-+
-+  - Fixed truncation race with lock_retrieve() in lock_store().
-+    The file has to be truncated only once the exclusive lock is held.
-+
-+  - Removed spurious debugging messages in .xs file.
-+
-+1.012 - Sun Jul  1 13:27:32 MEST 2001   Raphael Manfredi <Raphael_Manfredi@pobox.com>
-+
-+  - Systematically use "=over 4" for POD linters.
-+    Apparently, POD linters are much stricter than would
-+    otherwise be needed, but that's OK.
-+
-+  - Fixed memory corruption on croaks during thaw().  Thanks
-+    to Claudio Garcia for reproducing this bug and providing the
-+    code to exercise it.  Added test cases for this bug, adapted
-+    from Claudio's code.
-+
-+  - Made code compile cleanly with -Wall (from Jarkko Hietaniemi).
-+
-+  - Changed tagnum and classnum from I32 to IV in context.  Also
-+    from Jarkko.
-+
-+1.011 - Thu Mar 15 01:22:32 MET 2001   Raphael Manfredi <Raphael_Manfredi@pobox.com>
-+
-+  - Last version was wrongly compiling with assertions on, due
-+    to an edit glitch.  That did not cause any problem (apart from
-+    a slight performance loss) excepted on Win* platforms, where the
-+    assertion code does not compile.
-+
-+1.010 - Sat Feb 17 13:37:37 MET 2001   Raphael Manfredi <Raphael_Manfredi@pobox.com>
-+
-+  - Forgot to increase version number at previous patch (there were
-+    two of them, which is why we jump from 1.0.8 to 1.0.10).
-+
-+1.008 - Sat Feb 17 13:35:00 MET 2001   Raphael Manfredi <Raphael_Manfredi@pobox.com>
-+
-+  - binary format 2.4.
-+
-+  - Fixed incorrect error message.
-+
-+  - Now bless objects ASAP at retrieve time, which is meant to fix
-+    two bugs:
-+
-+    * Indirect references to overloaded object were not able to
-+      restore overloading if the object was not blessed yet,
-+      which was possible since blessing occurred only after the
-+      recursive retrieval.
-+
-+    * Storable hooks asking for serialization of blessed ref could
-+      get un-blessed refs at retrieval time, for the very same
-+      reason.
-+
-+    * The fix implemented here was suggested by Nick Ing-Simmons.
-+
-+  - Added support for blessed ref to tied structures.  This is the
-+    cause for the binary format change.
-+
-+  - Added EBCDIC version of the compatibility test with 0.6.11,
-+    from Peter Prymmer
-+
-+  - Added tests for the new features, and to make sure the bugs they
-+    are meant to fix are indeed fixed.
-+
-+1.007 - Wed Jan  3 10:43:18 MET 2001   Raphael Manfredi <Raphael_Manfredi@pobox.com>
-+
-+  - Removed spurious 'clean' entry in Makefile.PL.
-+
-+  - Added CAN_FLOCK to determine whether we can flock() or not,
-+    by inspecting Perl's configuration parameters, as determined
-+    by Configure.
-+
-+  - Trace offending package when overloading cannot be restored
-+    on a scalar.
-+
-+  - Made context cleanup safer to avoid dup freeing, mostly in the
-+    presence of repeated exceptions during store/retrieve (which can
-+    cause memory leaks anyway, so it's just additional safety, not a
-+    definite fix).
-+
-+1.006 - Sun Nov  5 18:23:48 MET 2000   Raphael Manfredi <Raphael_Manfredi@pobox.com>
-+
-+  - Fixed severe "object lost" bug for STORABLE_freeze returns,
-+    when refs to lexicals, taken within the hook, were to be
-+    serialized by Storable.  Enhanced the t/recurse.t test to
-+    stress hook a little more with refs to lexicals.
-+
-+1.005 - Thu Oct 26 19:14:38 MEST 2000   Raphael Manfredi <Raphael_Manfredi@pobox.com>
-+
-+  - Documented that store() and retrieve() can return undef.
-+    That is, the error reporting is not always made via exceptions,
-+    as the paragraph on error reporting was implying.
-+
-+  - Auto requires module of blessed ref when STORABLE_thaw misses.
-+    When the Storable engine looks for the STORABLE_thaw hook and
-+    does not find it, it now tries to require the package into which
-+    the blessed reference is.
-+
-+  - Just check $^O, in t/lock.t: there's no need to pull the whole
-+    Config module for that.
-+
-+1.004 - Mon Oct 23 20:03:49 MEST 2000   Raphael Manfredi <Raphael_Manfredi@pobox.com>
-+
-+  - Protected calls to flock() for DOS platform: apparently, the
-+    flock/fcnlt emulation is reported to be broken on that
-+    platform.
-+
-+  - Added logcarp emulation if they don't have Log::Agent, since
-+    we now use it to carp when lock_store/lock_retrieve is used
-+    on DOS.
-+
-+1.003 - Fri Sep 29 21:52:29 MEST 2000   Raphael Manfredi <Raphael_Manfredi@pobox.com>
-+
-+  - Avoid using "tainted" and "dirty" since Perl remaps them via
-+    cpp (i.e. #define).  This is deeply harmful when threading
-+    is enabled.  This concerned both the context structure and
-+    local variable and argument names.  Brrr..., scary!
-+
-+1.002 - Thu Sep 28 23:46:39 MEST 2000   Raphael Manfredi <Raphael_Manfredi@pobox.com>
-+
-+  - Fixed spelling in README.
-+
-+  - Added lock_store, lock_nstore, and lock_retrieve (advisory locking)
-+    after a proposal from Erik Haugan <erik@solbors.no>.
-+
-+  - Perls before 5.004_04 lack newSVpvn, added remapping in XS.
-+
-+  - Fixed stupid typo in the t/utf8.t test.
-+
-+1.001 - Sun Sep 17 18:51:10 MEST 2000   Raphael Manfredi <Raphael_Manfredi@pobox.com>
-+
-+  - binary format 2.3.
-+
-+  - Documented that doubles are stored stringified by nstore().
-+
-+  - Added Salvador Ortiz Garcia in CREDITS section,  He identified
-+    a bug in the store hooks and proposed the right fix: the class
-+    id was allocated too soon.  His bug case was also added to
-+    the regression test suite.
-+
-+  - Now only taint retrieved data when source was tainted.  A bug
-+    discovered by Marc Lehmann.
-+
-+  - Added support for UTF-8 strings, a contribution of Marc Lehmann.
-+    This is normally only activated in post-5.6 perls.
-+
-+1.000 - Thu Aug 31 23:06:06 MEST 2000   Raphael Manfredi <Raphael_Manfredi@pobox.com>
-+
-+  - First official release Storable 1.0, for inclusion in perl 5.7.0.
-+
-+  - The license scheme is now compatible with Perl's.
-+
-+0.703 - Thu Aug 24 01:02:02 MEST 2000   Raphael Manfredi <Raphael_Manfredi@pobox.com>
-+
-+  - ANSI-fied most of the code, preparing for Perl core integration.
-+    The next version of Storable will be 0.8, and will be integrated
-+    into the Perl core (development branch).
-+
-+  - Dispatch tables were moved upfront to relieve some compilers,
-+    especially on AIX and Windows platforms.
-+
-+  - Merged 64-bit fixes from perl5-porters.
-+
-+0.702 - Mon Aug 14 09:22:04 MEST 2000   Raphael Manfredi <Raphael_Manfredi@pobox.com>
-+
-+  - Added a refcnt dec in retrieve_tied_key(): sv_magic() increases
-+    the refcnt on the mg_ptr as well.
-+
-+  - Removed spurious dependency to Devel::Peek, which was used for
-+    testing only in t/tied_items.t.  Thanks to Conrad Heiney
-+    <conrad@fringehead.org> for spotting it first.
-+
-+0.701 - Sun Aug 13 22:12:59 MEST 2000   Raphael Manfredi <Raphael_Manfredi@pobox.com>
-+
-+  - Marc Lehmann kindly contributed code to add overloading support
-+    and to handle references to tied variables.
-+
-+  - Rewrote leading blurb about compatibility to make it clearer what
-+    "backward compatibility" is about: when I say 0.7 is backward
-+    compatible with 0.6, it means the revision 0.7 can read files
-+    produced by 0.6.
-+
-+  - Mention new Clone(3) extension in SEE ALSO.
-+
-+  - Was wrongly optimizing for "undef" values in hashes by not
-+    fully recursing: as a result, tied "undef" values were incorrectly
-+    serialized.
-+
-+0.700 - Sun Jul 30 12:59:17 MEST 2000   Raphael Manfredi <Raphael_Manfredi@pobox.com>
-+
-+  - The serializing format is new, known as version 2.0.  It is fully
-+    backward compatible with 0.6.  Earlier formats are deprecated and
-+    have not even been tested: next version will drop pre-0.6 format.
-+
-+  - Moved interface to the "beta" status.  Some tiny parts are still
-+    subject to change, but nothing important enough to warrant an "alpha"
-+    status any longer.
-+
-+  - Slightly reduced the size of the Storable image by factorizing
-+    object class names and removing final object storage notification due
-+    to a redesign of the blessed object storing.
-+
-+  - Classes can now redefine how they wish their instances to be serialized
-+    and/or deep cloned.  Serializing hooks are written in Perl code.
-+
-+  - The engine is now fully re-entrant.
-+
-+0.611 - Sun Apr  2 23:47:50 MEST 2000   Raphael Manfredi <Raphael_Manfredi@pobox.com>
-+
-+  - Added provision to detect more recent binary formats, since
-+    the new upcoming Storable-0.7 will use a different format.
-+    In order to prevent attempting the de-serialization of newer
-+    formats by older versions, I'm adding this now to the 0.6 series.
-+
-+  - I'm expecting this revision to be the last of the 0.6 series.
-+    Unless it does not work with perl 5.6, which I don't use yet,
-+    and therefore against which I cannot test.
-+
-+0.610 - Wed Mar 29 19:55:21 MEST 2000   Raphael Manfredi <Raphael_Manfredi@pobox.com>
-+
-+  - Added note about format incompatibilities with old versions
-+    (i.e. pre 0.5@9 formats, which cannot be understood as there
-+    was no versionning information in the file by then).
-+
-+  - Protect all $@ variables when eval {} used, to avoid corrupting
-+    it when store/retrieve is called within an exception handler.
-+
-+  - Mistakenly included "patchlevel.h" instead of <patchlevel.h>,
-+    preventing Perl's patchlevel from being included, which is
-+    needed starting from 5.6.
-+
-+0.609 - Thu Feb 10 19:48:16 MET 2000   Raphael Manfredi <Raphael_Manfredi@pobox.com>
-+
-+  - Fixed shared "undef" bug in hashes, which did not remain shared
-+    through store/retrieve.
-+
-+  - added last_op_in_netorder() predicate
-+
-+  - documented last_op_in_netorder()
-+
-+  - added tests for the new last_op_in_netorder() predicate
-+
-+0.607 - Wed Oct 20 19:07:36 MEST 1999   Raphael Manfredi <Raphael_Manfredi@pobox.com>
-+
-+  - Forgot to update VERSION
-+
-+0.606 - Tue Oct 19 21:25:02 MEST 1999   Raphael Manfredi <Raphael_Manfredi@pobox.com>
-+
-+  - Added mention of japanese translation for the manual page.
-+
-+  - Fixed typo in macro that made threaded code not compilable,
-+    especially on Win32 platforms.
-+
-+  - Changed detection of older perls (pre-5.005) by testing PATCHLEVEL
-+    directly instead of relying on internal symbols.
-+
-+0.605 - Tue Sep 14 22:13:28 MEST 1999   Raphael Manfredi <Raphael_Manfredi@pobox.com>
-+
-+  - Integrated "thread-safe" patch from Murray Nesbitt.
-+    Note that this may not be very efficient for threaded code,
-+    see comment in the code.
-+
-+  - Try to avoid compilation warning on 64-bit CPUs. Can't test it,
-+    since I don't have access to such machines.
-+
-+0.604 - Mon Jul 12 14:37:19 METDST 1999   Raphael Manfredi <Raphael_Manfredi@pobox.com>
-+
-+  - changed my e-mail to pobox.
-+
-+  - mentioned it is not thread-safe.
-+
-+  - updated version number.
-+
-+  - uses new internal PL_* naming convention.
-+
-+0.603 - Fri Jul  3 13:38:16 METDST 1998   Raphael Manfredi <Raphael_Manfredi@grenoble.hp.com>
-+
-+  - Updated benchmark figures due to recent optimizations done in
-+    store(): tagnums are now stored as-is in the hash table, so
-+    no surrounding SV is created. And the "shared keys" mode for
-+    hash table was turned off.
-+
-+  - Fixed backward compatibility (wrt 0.5@9) for retrieval of
-+    blessed refs. That old version did something wrong, but the
-+    bugfix prevented correct retrieval of the old format.
-+
-+0.602 - Mon Jun 22 11:00:48 METDST 1998   Raphael Manfredi <Raphael_Manfredi@grenoble.hp.com>
-+
-+  - Changed benchmark figures.
-+
-+  - Adjust refcnt of tied objects after calling sv_magic() to avoid
-+    memory leaks.  Contributed by Jeff Gresham.
-+
-+0.601 - Fri Jun 12 11:50:04 METDST 1998   Raphael Manfredi <Raphael_Manfredi@grenoble.hp.com>
-+
-+  - Added workaround for persistent LVALUE-ness in perl5.004. All
-+    scalars tagged as being an lvalue are handled as if they were
-+    not an lvalue at all.  Added test for that LVALUE bug workaround.
-+
-+  - Now handles Perl immortal scalars explicitly, by storing &sv_yes
-+    as such, explicitly.
-+
-+  - Retrieval of non-immortal undef cannot be shared. Previous
-+    version was over-optimizing by not creating a separate SV for
-+    all undefined scalars seen.
-+
-+0.600 - Thu Jun  4 17:21:51 METDST 1998   Raphael Manfredi <Raphael_Manfredi@grenoble.hp.com>
-+
-+  - This version introduces a binary incompatibility in the generated
-+    binary image, which is more compact than older ones by approximatively
-+    15%, depending on the exact degree of sharing in your structures.
-+
-+  - The good news is that your older images can still be retrieved with
-+    this version, i.e. backward compatibility is preserved. This version
-+    of Storable can only generate new binaries however.
-+
-+  - Another good news is that the retrieval of data structure is
-+    significantly quicker than before, because a Perl array is used
-+    instead of a hash table to keep track of retrieved objects, and
-+    also because the image being smaller, less I/O function calls are
-+    made.
-+
-+0.509 - Tue May 12 09:15:15 METDST 1998   Raphael Manfredi <Raphael_Manfredi@grenoble.hp.com>
-+
-+  - Version number now got from Storable.pm directly.
-+
-+  - Fixed overzealous sv_type() optimization, which would make
-+    Storable fail when faced with an "upgraded" SV to the PVIV
-+    or PVNV kind containing a reference.
-+
-+0.508 - Thu Apr 30 15:11:30 METDST 1998   Raphael Manfredi <Raphael_Manfredi@grenoble.hp.com>
-+
-+  - Extended the SYNOPSIS section to give quick overview of the
-+    routines and their signature.
-+
-+  - Optimized sv_type() to avoid flags checking when not needed, i.e.
-+    when their type makes it impossible for them to be refs or tied.
-+    This slightly increases throughput by a few percents when refs
-+    and tied variables are marginal occurrences in your data.
-+
-+  - Stubs for XS now use OutputStream and InputStream file types to
-+    make it work when the given file is actually a socket. Perl
-+    makes a distinction for sockets in its internal I/O structures
-+    by having both a read and a write structure, whereas plain files
-+    share the same one.
-+
-+0.507 - Fri Apr 24 17:29:23 METDST 1998   Raphael Manfredi <Raphael_Manfredi@grenoble.hp.com>
-+
-+  - Thanks to a contribution from Benjamin A. Holzman, Storable is now
-+    able to correctly serialize tied SVs, i.e. tied arrays, hashes
-+    and scalars.
-+
-+0.506 - Thu Apr  9 18:07:51 METDST 1998   Raphael Manfredi <Raphael_Manfredi@grenoble.hp.com>
-+
-+  - I said SvPOK() had changed to SvPOKp(), but that was a lie...
-+
-+0.505 - Wed Apr  8 13:14:29 METDST 1998   Raphael Manfredi <Raphael_Manfredi@grenoble.hp.com>
-+
-+  - Wrote sizeof(SV *) instead of sizeof(I32) when portable, which
-+    in effect mangled the object tags and prevented portability
-+    across 32/64 bit architectures!
-+
-+0.504 - Wed Mar 25 14:57:02 MET 1998   Raphael Manfredi <Raphael_Manfredi@grenoble.hp.com>
-+
-+  - Added code example for store_fd() and retrieve_fd() in the
-+    man page, to emphasize that file descriptors must be passed as
-+    globs, not as plain strings.
-+
-+  - Cannot use SV addresses as tag when using nstore() on LP64. This
-+    was the cause of problems when creating a storable image on an
-+    LP64 machine and retrieving it on an ILP32 system, which is
-+    exactly what nstore() is meant for...
-+
-+  - However, we continue to use SV addresses as tags for plain store(),
-+    because benchmarking shows that it saves up to 8% of the store
-+    time, and store() is meant to be fast at the expense of lack
-+    of portability.
-+
-+  - This means there will be approximately an 8% degradation of
-+    performance for nstore(), but it's now working as expected.
-+    That cost may vary on your machine of course, since it is
-+    solely caused by the memory allocation overhead used to create
-+    unique SV tags for each distinct stored SV.
-+
-+0.503 - Tue Jan 20 09:21:53 MET 1998   Raphael Manfredi <Raphael_Manfredi@grenoble.hp.com>
-+
-+  - Don't use any '_' in version number.
-+
-+0.5_02 - Tue Jan 13 17:51:50 MET 1998   Raphael Manfredi <Raphael_Manfredi@grenoble.hp.com>
-+
-+  - Updated version number.
-+
-+  - added binmode() calls for systems where it matters.
-+
-+  - Be sure to pass globs, not plain file strings, to C routines,
-+    so that Storable can be used under the Perl debugger.
-+
-+0.5_01 - Wed Nov  5 10:53:22 MET 1997   Raphael Manfredi <Raphael_Manfredi@grenoble.hp.com>
-+
-+  - Fix memory leaks on seen hash table and returned SV refs.
-+
-+  - Storable did not work properly when tainting enabled.
-+
-+  - Fixed "Allocation too large" messages in freeze/thaw and added.
-+    proper regression test in t/freeze.t.
-+
-+0.5 - Tue Jun 10 18:47:47 MET 1997   Raphael Manfredi <Raphael_Manfredi@grenoble.hp.com>
-+
-+  - Fix storing in network order where it isn't native
-+
-+  - Fix size calculation when storing to memory or cloning
-+
-+0.4_07 - Tue Jun  3 09:41:33 METDST 1997   Raphael Manfredi <Raphael_Manfredi@grenoble.hp.com>
-+
-+  - Added freeze/thaw interface and dclone.
-+
-+0.4_06 - Fri May 16 10:45:47 METDST 1997   Raphael Manfredi <Raphael_Manfredi@grenoble.hp.com>
-+
-+  - Forgot that AutoLoader does not export its own AUTOLOAD.
-+    I could use
-+
-+      use AutoLoader 'AUTOLOAD';
-+
-+    but that would not be backward compatible. So the export is
-+    done by hand...
-+
-+0.4_05 - Tue Mar 25 11:21:32 MET 1997   Raphael Manfredi <Raphael_Manfredi@grenoble.hp.com>
-+
-+  - Empty scalar strings are now "defined" at retrieval time.
-+
-+  - New test to ensure an empty string is defined when retrieved.
-+
-+0.4_04 - Thu Feb 27 16:32:44 MET 1997   Raphael Manfredi <Raphael_Manfredi@grenoble.hp.com>
-+
-+  - Declare VERSION as being used
-+
-+  - Fixed a typo in the PerlIO_putc remapping.
-+    PerlIO_read and perlIO_write inverted size/nb_items.
-+    (only relevant for pre-perl5.004 versions)
-+
-+0.4_03 - Thu Feb 27 15:58:31 MET 1997   Raphael Manfredi <Raphael_Manfredi@grenoble.hp.com>
-+
-+  - Added VERSION identification
-+
-+  - Allow build with perl5.003, which is ante perlIO time
-+
-+0.4_02 - Wed Jan 22 15:19:56 MET 1997   Raphael Manfredi <Raphael_Manfredi@grenoble.hp.com>
-+
-+  - Added "thanks to" section to README.
-+
-+  - Documented new forgive_me variable.
-+
-+  - Made 64-bit clean.
-+
-+  - Added forgive_me support to allow store() of data structures
-+    containing non-storable items like CODE refs.
-+
-+0.4 - Wed Jan 14 19:25:57 MET 1997   Raphael Manfredi <Raphael_Manfredi@grenoble.hp.com>
-+
-+  - Avoid changing directory in tests
-+
-+  - Add a separate type for storing longer strings
-+
-+  - Use PerlIO APIs
-+
-+0.3 - Tue Jan 13 16:12:36 MET 1997   Raphael Manfredi <Raphael_Manfredi@grenoble.hp.com>
-+
-+  - Encode integers as integers even if they have NOK flag
-+
-+  - Avoid extra increment of ref count when retreiving scalar references
-+
-+  - Fix mutability of hash slots decoded from undefs
-+
-+0.2_02 - Mon Jan 13 17:53:18 MET 1997   Raphael Manfredi <Raphael_Manfredi@grenoble.hp.com>
-+
-+  - Added MTG statistics.
-+
-+  - Updated statistics with MTG performance (1 Mbyte/s on store)
-+
-+  - Missed Changelog in MANIFEST.
-+
-+0.2 - Mon Jan 13 17:20:55 MET 1997   Raphael Manfredi <Raphael_Manfredi@grenoble.hp.com>
-+
-+  - Croak only after having closed the file
-+
-+  - Removed erroneous line in retrieve_fd
-+
-+  - Forgot to take network order into account for lengths
-+
-+0.1 - Mon Oct  2 11:50:02 MET 1995   Raphael Manfredi <Raphael_Manfredi@grenoble.hp.com>
-+
-+  - Initial release
-diff --git a/MANIFEST b/MANIFEST
-deleted file mode 100644
-index 5e382d9..0000000
---- a/MANIFEST
-+++ /dev/null
-@@ -1,65 +0,0 @@
--ChangeLog
--hints/gnukfreebsd.pl
--hints/gnuknetbsd.pl
--hints/hpux.pl
--hints/linux.pl
--Makefile.PL
--MANIFEST			This list of files
--META.json			Module JSON meta-data (added by MakeMaker)
--META.yml			Module meta-data (added by MakeMaker)
--ppport.h
--README
--stacksize
--Storable.pm
--Storable.xs
--t/attach.t
--t/attach_errors.t
--t/attach_singleton.t
--t/blessed.t
--t/canonical.t
--t/circular_hook.t
--t/code.t
--t/compat01.t
--t/compat06.t
--t/croak.t
--t/CVE-2015-1592.t
--t/dclone.t
--t/destroy.t
--t/downgrade.t
--t/file_magic.t
--t/flags.t
--t/forgive.t
--t/freeze.t
--t/HAS_ATTACH.pm
--t/HAS_HOOK.pm
--t/HAS_OVERLOAD.pm
--t/huge.t
--t/hugeids.t
--t/integer.t
--t/interwork56.t
--t/just_plain_nasty.t
--t/leaks.t
--t/lock.t
--t/make_56_interwork.pl
--t/make_downgrade.pl
--t/make_overload.pl
--t/malice.t
--t/overload.t
--t/recurse.t
--t/regexp.t
--t/restrict.t
--t/retrieve.t
--t/robust.t
--t/sig_die.t
--t/st-dump.pl
--t/store.t
--t/testlib.pl
--t/threads.t
--t/tied.t
--t/tied_hook.t
--t/tied_items.t
--t/tied_reify.t
--t/tied_store.t
--t/utf8.t
--t/utf8hash.t
--t/weak.t
-diff --git a/MANIFEST.SKIP b/MANIFEST.SKIP
-new file mode 100644
-index 0000000..d6ef8b0
---- /dev/null
-+++ b/MANIFEST.SKIP
-@@ -0,0 +1,58 @@
-+# Avoid version control files.
-+\bRCS\b
-+\bCVS\b
-+\bSCCS\b
-+,v$
-+\B\.svn\b
-+\B\.git\b
-+^\.github\b
-+\B\.gitignore\b
-+\b_darcs\b
-+\B\.cvsignore$
-+\B\.bzr\b
-+\B\.bzrignore$
-+
-+# Avoid VMS specific MakeMaker generated files
-+\bDescrip.MMS$
-+\bDESCRIP.MMS$
-+\bdescrip.mms$
-+
-+# Avoid Makemaker generated and utility files.
-+\bMANIFEST\.bak
-+\bMakefile$
-+\bblib/
-+\bMakeMaker-\d
-+\bpm_to_blib\.ts$
-+\bpm_to_blib$
-+\bblibdirs\.ts$         # 6.18 through 6.25 generated this
-+\b_eumm/                # 7.05_05 and above
-+
-+# Avoid temp and backup files.
-+~$
-+\.old$
-+\#$
-+\b\.#
-+\.bak$
-+\.tmp$
-+\.#
-+\.rej$
-+\..*\.sw.?$
-+\.~\d+~$
-+
-+\B\.DS_Store
-+\B\._
-+\.i[cC]loud$
-+
-+\bcover_db\b
-+\bcovered\b
-+
-+\B\.prove$
-+
-+^MYMETA\.
-+^META_new\.(?:json|yml)
-+
-+^Storable-[0-9.]+
-+
-+\.bs$
-+\.c$
-+\.o$
-diff --git a/META.json b/META.json
-deleted file mode 100644
-index c19c6f6..0000000
---- a/META.json
-+++ /dev/null
-@@ -1,58 +0,0 @@
--{
--   "abstract" : "persistence for Perl data structures",
--   "author" : [
--      "Perl 5 Porters"
--   ],
--   "dynamic_config" : 1,
--   "generated_by" : "ExtUtils::MakeMaker version 7.62, CPAN::Meta::Converter version 2.150010",
--   "license" : [
--      "perl_5"
--   ],
--   "meta-spec" : {
--      "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec",
--      "version" : 2
--   },
--   "name" : "Storable",
--   "no_index" : {
--      "directory" : [
--         "t",
--         "inc"
--      ]
--   },
--   "prereqs" : {
--      "build" : {
--         "requires" : {
--            "ExtUtils::MakeMaker" : "6.31"
--         }
--      },
--      "configure" : {
--         "requires" : {
--            "ExtUtils::MakeMaker" : "6.31"
--         }
--      },
--      "runtime" : {
--         "requires" : {
--            "XSLoader" : "0"
--         }
--      },
--      "test" : {
--         "requires" : {
--            "Test::More" : "0.41"
--         }
--      }
--   },
--   "provides" : {
--      "Storable" : {
--         "file" : "Storable.pm",
--         "version" : "3.25"
--      }
--   },
--   "release_status" : "stable",
--   "resources" : {
--      "bugtracker" : {
--         "web" : "https://github.com/Perl/perl5/issues"
--      }
--   },
--   "version" : "3.25",
--   "x_serialization_backend" : "JSON::PP version 4.06"
--}
-diff --git a/META.yml b/META.yml
-deleted file mode 100644
-index 7a8ca35..0000000
---- a/META.yml
-+++ /dev/null
-@@ -1,30 +0,0 @@
-----
--abstract: 'persistence for Perl data structures'
--author:
--  - 'Perl 5 Porters'
--build_requires:
--  ExtUtils::MakeMaker: '6.31'
--  Test::More: '0.41'
--configure_requires:
--  ExtUtils::MakeMaker: '6.31'
--dynamic_config: 1
--generated_by: 'ExtUtils::MakeMaker version 7.62, CPAN::Meta::Converter version 2.150010'
--license: perl
--meta-spec:
--  url: http://module-build.sourceforge.net/META-spec-v1.4.html
--  version: '1.4'
--name: Storable
--no_index:
--  directory:
--    - t
--    - inc
--provides:
--  Storable:
--    file: Storable.pm
--    version: '3.25'
--requires:
--  XSLoader: '0'
--resources:
--  bugtracker: https://github.com/Perl/perl5/issues
--version: '3.25'
--x_serialization_backend: 'CPAN::Meta::YAML version 0.018'
-diff --git a/Makefile.PL b/Makefile.PL
-index b705654..5d53384 100644
---- a/Makefile.PL
-+++ b/Makefile.PL
-@@ -1,7 +1,7 @@
- #
- #  Copyright (c) 1995-2000, Raphael Manfredi
- #  Copyright (c) 2017, Reini Urban
--#  
-+#
- #  You may redistribute only under the same terms as Perl 5, as specified
- #  in the README file that comes with the distribution.
- #
-@@ -15,72 +15,33 @@ WriteMakefile(
-     NAME                => 'Storable',
-     AUTHOR              => 'Perl 5 Porters',
-     LICENSE             => 'perl',
--    DISTNAME            => "Storable",
--    PREREQ_PM           =>
--      {
--          XSLoader => 0,
--      },
--    ( $ExtUtils::MakeMaker::VERSION >= 6.64 ?
--        (
--            CONFIGURE_REQUIRES => {
--                'ExtUtils::MakeMaker' => '6.31',
--            },
--            BUILD_REQUIRES => {
--                'ExtUtils::MakeMaker' => '6.31',
-+    PREREQ_PM           => {
-+        XSLoader => 0,
-+    },
-+    INSTALLDIRS         => ($] >= 5.007 && $] < 5.012) ? 'perl' : 'site',
-+    VERSION_FROM        => 'lib/Storable.pm',
-+    ABSTRACT_FROM       => 'lib/Storable.pm',
-+    CONFIGURE_REQUIRES  => {
-+        'ExtUtils::MakeMaker' => '6.31',
-+    },
-+    BUILD_REQUIRES      => {
-+        'ExtUtils::MakeMaker' => '6.31',
-+    },
-+    TEST_REQUIRES       => {
-+        'Test::More' => '0.82',
-+        'File::Temp' => '0',
-+    },
-+    META_MERGE          => {
-+        "meta-spec" => { version => 2 },
-+        resources   => {
-+            bugtracker => 'https://github.com/Perl/perl5/issues',
-+        },
-+        provides    => {
-+            'Storable'  => {
-+                file        => 'lib/Storable.pm',
-+                version     => MM->parse_version('lib/Storable.pm'),
-             },
--            TEST_REQUIRES => {
--                'Test::More' => '0.82',
--            },
--           )
--        : () ),
--    INSTALLDIRS => ($] >= 5.007 && $] < 5.012) ? 'perl' : 'site',
--    VERSION_FROM    => 'Storable.pm',
--    ABSTRACT_FROM   => 'Storable.pm',
--    ($ExtUtils::MakeMaker::VERSION > 6.45 ?
--     (META_MERGE        => { resources =>
--                               { bugtracker => 'https://github.com/Perl/perl5/issues' },
--                            provides    => {
--                                'Storable'  => {
--                                    file        => 'Storable.pm',
--                                    version     => MM->parse_version('Storable.pm'),
--                                },
--                            },
--
--                           },
--    ) : ()),
--    dist                => { SUFFIX => 'gz', COMPRESS => 'gzip -f' },
-+        },
-+    },
-     clean               => { FILES => 'Storable-*' },
- );
--
--my $ivtype = $Config{ivtype};
--
--# I don't know if the VMS folks ever supported long long on 5.6.x
--if ($ivtype and $ivtype eq 'long long' and $^O !~ /^MSWin/) {
--  print <<'EOM';
--
--You appear to have a perl configured to use 64 bit integers in its scalar
--variables.  If you have existing data written with an earlier version of
--Storable which this version of Storable refuses to load with a
--
--   Byte order is not compatible
--
--error, then please read the section "64 bit data in perl 5.6.0 and 5.6.1"
--in the Storable documentation for instructions on how to read your data.
--
--(You can find the documentation at the end of Storable.pm in POD format)
--
--EOM
--}
--
--package MY;
--
--sub depend {
--    "
--
--release : dist
--	git tag \$(VERSION)
--	cpan-upload \$(DISTVNAME).tar\$(SUFFIX)
--	git push
--	git push --tags
--"
--}
-diff --git a/README b/README
-index f63ace9..86212fd 100644
---- a/README
-+++ b/README
-@@ -27,7 +27,7 @@ complex and circular it is, provided it contains only SCALAR, ARRAY,
- HASH (possibly tied) and references (possibly blessed) to those items.
- 
- At a later stage, or in another program, you may retrieve data from
--the stored file and recreate the same hiearchy in memory. If you
-+the stored file and recreate the same hierarchy in memory. If you
- had blessed references, the retrieved references are blessed into
- the same package, so you must make sure you have access to the
- same perl class than the one used to create the relevant objects.
-diff --git a/Storable.xs b/Storable.xs
-index a558dd7..3930db6 100644
---- a/Storable.xs
-+++ b/Storable.xs
-@@ -22,6 +22,7 @@
- #define NEED_newCONSTSUB
- #define NEED_newSVpvn_flags
- #define NEED_newRV_noinc
-+#define NEED_sv_vstring_get
- #include "ppport.h"             /* handle old perls */
- 
- #ifdef DEBUGGING
-@@ -39,10 +40,10 @@
- #endif
- 
- #ifndef HvRITER_set
--#  define HvRITER_set(hv,r)	(HvRITER(hv) = r)
-+#  define HvRITER_set(hv,r)     (HvRITER(hv) = r)
- #endif
- #ifndef HvEITER_set
--#  define HvEITER_set(hv,r)	(HvEITER(hv) = r)
-+#  define HvEITER_set(hv,r)     (HvEITER(hv) = r)
- #endif
- 
- #ifndef HvRITER_get
-@@ -57,17 +58,17 @@
- #endif
- 
- #ifndef HvTOTALKEYS
--#  define HvTOTALKEYS(hv)	HvKEYS(hv)
-+#  define HvTOTALKEYS(hv)       HvKEYS(hv)
- #endif
- /* 5.6 */
- #ifndef HvUSEDKEYS
--#  define HvUSEDKEYS(hv)	HvKEYS(hv)
-+#  define HvUSEDKEYS(hv)        HvKEYS(hv)
- #endif
- 
- #ifdef SVf_IsCOW
--#  define SvTRULYREADONLY(sv)	SvREADONLY(sv)
-+#  define SvTRULYREADONLY(sv)   SvREADONLY(sv)
- #else
--#  define SvTRULYREADONLY(sv)	(SvREADONLY(sv) && !SvIsCOW(sv))
-+#  define SvTRULYREADONLY(sv)   (SvREADONLY(sv) && !SvIsCOW(sv))
- #endif
- 
- #ifndef strEQc
-@@ -96,8 +97,8 @@
-  */
- 
- #define TRACEME(x)                                            \
--    STMT_START {					      \
--        if (cxt->traceme)				      \
-+    STMT_START {                                              \
-+        if (cxt->traceme)                                     \
-             { PerlIO_stdoutf x; PerlIO_stdoutf("\n"); }       \
-     } STMT_END
- 
-@@ -107,16 +108,16 @@
-             { PerlIO_stdoutf x; PerlIO_stdoutf("\n"); }       \
-     } STMT_END
- 
--#define INIT_TRACEME							\
--    STMT_START {							\
--	cxt->traceme = SvTRUE(get_sv("Storable::DEBUGME", GV_ADD));	\
-+#define INIT_TRACEME                                                    \
-+    STMT_START {                                                        \
-+        cxt->traceme = SvTRUE(get_sv("Storable::DEBUGME", GV_ADD));     \
-     } STMT_END
- 
- #else
- #define TRACEME(x)
- #define TRACEMED(x)
- #define INIT_TRACEME
--#endif	/* DEBUGME */
-+#endif  /* DEBUGME */
- 
- #ifdef DASSERT
- #define ASSERT(x,y)                                              \
-@@ -135,77 +136,77 @@
-  * Type markers.
-  */
- 
--#define C(x) ((char) (x))	/* For markers with dynamic retrieval handling */
--
--#define SX_OBJECT	C(0)	/* Already stored object */
--#define SX_LSCALAR	C(1)	/* Scalar (large binary) follows (length, data) */
--#define SX_ARRAY	C(2)	/* Array forthcoming (size, item list) */
--#define SX_HASH		C(3)	/* Hash forthcoming (size, key/value pair list) */
--#define SX_REF		C(4)	/* Reference to object forthcoming */
--#define SX_UNDEF	C(5)	/* Undefined scalar */
--#define SX_INTEGER	C(6)	/* Integer forthcoming */
--#define SX_DOUBLE	C(7)	/* Double forthcoming */
--#define SX_BYTE		C(8)	/* (signed) byte forthcoming */
--#define SX_NETINT	C(9)	/* Integer in network order forthcoming */
--#define SX_SCALAR	C(10)	/* Scalar (binary, small) follows (length, data) */
--#define SX_TIED_ARRAY	C(11)	/* Tied array forthcoming */
--#define SX_TIED_HASH	C(12)	/* Tied hash forthcoming */
--#define SX_TIED_SCALAR	C(13)	/* Tied scalar forthcoming */
--#define SX_SV_UNDEF	C(14)	/* Perl's immortal PL_sv_undef */
--#define SX_SV_YES	C(15)	/* Perl's immortal PL_sv_yes */
--#define SX_SV_NO	C(16)	/* Perl's immortal PL_sv_no */
--#define SX_BLESS	C(17)	/* Object is blessed */
--#define SX_IX_BLESS	C(18)	/* Object is blessed, classname given by index */
--#define SX_HOOK		C(19)	/* Stored via hook, user-defined */
--#define SX_OVERLOAD	C(20)	/* Overloaded reference */
--#define SX_TIED_KEY	C(21)	/* Tied magic key forthcoming */
--#define SX_TIED_IDX	C(22)	/* Tied magic index forthcoming */
--#define SX_UTF8STR	C(23)	/* UTF-8 string forthcoming (small) */
--#define SX_LUTF8STR	C(24)	/* UTF-8 string forthcoming (large) */
--#define SX_FLAG_HASH	C(25)	/* Hash with flags forthcoming (size, flags, key/flags/value triplet list) */
-+#define C(x) ((char) (x))       /* For markers with dynamic retrieval handling */
-+
-+#define SX_OBJECT       C(0)    /* Already stored object */
-+#define SX_LSCALAR      C(1)    /* Scalar (large binary) follows (length, data) */
-+#define SX_ARRAY        C(2)    /* Array forthcoming (size, item list) */
-+#define SX_HASH         C(3)    /* Hash forthcoming (size, key/value pair list) */
-+#define SX_REF          C(4)    /* Reference to object forthcoming */
-+#define SX_UNDEF        C(5)    /* Undefined scalar */
-+#define SX_INTEGER      C(6)    /* Integer forthcoming */
-+#define SX_DOUBLE       C(7)    /* Double forthcoming */
-+#define SX_BYTE         C(8)    /* (signed) byte forthcoming */
-+#define SX_NETINT       C(9)    /* Integer in network order forthcoming */
-+#define SX_SCALAR       C(10)   /* Scalar (binary, small) follows (length, data) */
-+#define SX_TIED_ARRAY   C(11)   /* Tied array forthcoming */
-+#define SX_TIED_HASH    C(12)   /* Tied hash forthcoming */
-+#define SX_TIED_SCALAR  C(13)   /* Tied scalar forthcoming */
-+#define SX_SV_UNDEF     C(14)   /* Perl's immortal PL_sv_undef */
-+#define SX_SV_YES       C(15)   /* Perl's immortal PL_sv_yes */
-+#define SX_SV_NO        C(16)   /* Perl's immortal PL_sv_no */
-+#define SX_BLESS        C(17)   /* Object is blessed */
-+#define SX_IX_BLESS     C(18)   /* Object is blessed, classname given by index */
-+#define SX_HOOK         C(19)   /* Stored via hook, user-defined */
-+#define SX_OVERLOAD     C(20)   /* Overloaded reference */
-+#define SX_TIED_KEY     C(21)   /* Tied magic key forthcoming */
-+#define SX_TIED_IDX     C(22)   /* Tied magic index forthcoming */
-+#define SX_UTF8STR      C(23)   /* UTF-8 string forthcoming (small) */
-+#define SX_LUTF8STR     C(24)   /* UTF-8 string forthcoming (large) */
-+#define SX_FLAG_HASH    C(25)   /* Hash with flags forthcoming (size, flags, key/flags/value triplet list) */
- #define SX_CODE         C(26)   /* Code references as perl source code */
--#define SX_WEAKREF	C(27)	/* Weak reference to object forthcoming */
--#define SX_WEAKOVERLOAD	C(28)	/* Overloaded weak reference */
--#define SX_VSTRING	C(29)	/* vstring forthcoming (small) */
--#define SX_LVSTRING	C(30)	/* vstring forthcoming (large) */
--#define SX_SVUNDEF_ELEM	C(31)	/* array element set to &PL_sv_undef */
--#define SX_REGEXP	C(32)	/* Regexp */
--#define SX_LOBJECT	C(33)	/* Large object: string, array or hash (size >2G) */
--#define SX_BOOLEAN_TRUE	C(34)	/* Boolean true */
--#define SX_BOOLEAN_FALSE	C(35)	/* Boolean false */
--#define SX_LAST		C(36)	/* invalid. marker only */
-+#define SX_WEAKREF      C(27)   /* Weak reference to object forthcoming */
-+#define SX_WEAKOVERLOAD C(28)   /* Overloaded weak reference */
-+#define SX_VSTRING      C(29)   /* vstring forthcoming (small) */
-+#define SX_LVSTRING     C(30)   /* vstring forthcoming (large) */
-+#define SX_SVUNDEF_ELEM C(31)   /* array element set to &PL_sv_undef */
-+#define SX_REGEXP       C(32)   /* Regexp */
-+#define SX_LOBJECT      C(33)   /* Large object: string, array or hash (size >2G) */
-+#define SX_BOOLEAN_TRUE C(34)   /* Boolean true */
-+#define SX_BOOLEAN_FALSE        C(35)   /* Boolean false */
-+#define SX_LAST         C(36)   /* invalid. marker only */
- 
- /*
-  * Those are only used to retrieve "old" pre-0.6 binary images.
-  */
--#define SX_ITEM		'i'	/* An array item introducer */
--#define SX_IT_UNDEF	'I'	/* Undefined array item */
--#define SX_KEY		'k'	/* A hash key introducer */
--#define SX_VALUE	'v'	/* A hash value introducer */
--#define SX_VL_UNDEF	'V'	/* Undefined hash value */
-+#define SX_ITEM         'i'     /* An array item introducer */
-+#define SX_IT_UNDEF     'I'     /* Undefined array item */
-+#define SX_KEY          'k'     /* A hash key introducer */
-+#define SX_VALUE        'v'     /* A hash value introducer */
-+#define SX_VL_UNDEF     'V'     /* Undefined hash value */
- 
- /*
-  * Those are only used to retrieve "old" pre-0.7 binary images
-  */
- 
--#define SX_CLASS	'b'	/* Object is blessed, class name length <255 */
--#define SX_LG_CLASS	'B'	/* Object is blessed, class name length >255 */
--#define SX_STORED	'X'	/* End of object */
-+#define SX_CLASS        'b'     /* Object is blessed, class name length <255 */
-+#define SX_LG_CLASS     'B'     /* Object is blessed, class name length >255 */
-+#define SX_STORED       'X'     /* End of object */
- 
- /*
-  * Limits between short/long length representation.
-  */
- 
--#define LG_SCALAR	255	/* Large scalar length limit */
--#define LG_BLESS	127	/* Large classname bless limit */
-+#define LG_SCALAR       255     /* Large scalar length limit */
-+#define LG_BLESS        127     /* Large classname bless limit */
- 
- /*
-  * Operation types
-  */
- 
--#define ST_STORE	0x1	/* Store operation */
--#define ST_RETRIEVE	0x2	/* Retrieval operation */
--#define ST_CLONE	0x4	/* Deep cloning operation */
-+#define ST_STORE        0x1     /* Store operation */
-+#define ST_RETRIEVE     0x2     /* Retrieval operation */
-+#define ST_CLONE        0x4     /* Deep cloning operation */
- 
- /*
-  * The following structure is used for hash table key retrieval. Since, when
-@@ -219,10 +220,10 @@
-  * is required. Hence the aptr pointer.
-  */
- struct extendable {
--    char *arena;	/* Will hold hash key strings, resized as needed */
--    STRLEN asiz;	/* Size of aforementioned buffer */
--    char *aptr;		/* Arena pointer, for in-place read/write ops */
--    char *aend;		/* First invalid address */
-+    char *arena;        /* Will hold hash key strings, resized as needed */
-+    STRLEN asiz;        /* Size of aforementioned buffer */
-+    char *aptr;         /* Arena pointer, for in-place read/write ops */
-+    char *aend;         /* First invalid address */
- };
- 
- /*
-@@ -241,7 +242,7 @@ struct extendable {
-  * indexing by a hash at store time, and via an array at retrieve time.
-  */
- 
--typedef unsigned long stag_t;	/* Used by pre-0.6 binary format */
-+typedef unsigned long stag_t;   /* Used by pre-0.6 binary format */
- 
- /*
-  * Make the tag type 64-bit on 64-bit platforms.
-@@ -260,7 +261,7 @@ typedef STRLEN ntag_t;
-  * The following "thread-safe" related defines were contributed by
-  * Murray Nesbitt <murray@activestate.com> and integrated by RAM, who
-  * only renamed things a little bit to ensure consistency with surrounding
-- * code.	-- RAM, 14/09/1999
-+ * code.        -- RAM, 14/09/1999
-  *
-  * The original patch suffered from the fact that the stcxt_t structure
-  * was global.  Murray tried to minimize the impact on the code as much as
-@@ -278,7 +279,7 @@ typedef STRLEN ntag_t;
-  * Conditional UTF8 support.
-  *
-  */
--#define STORE_UTF8STR(pv, len)	STORE_PV_LEN(pv, len, SX_UTF8STR, SX_LUTF8STR)
-+#define STORE_UTF8STR(pv, len)  STORE_PV_LEN(pv, len, SX_UTF8STR, SX_LUTF8STR)
- #define HAS_UTF8_SCALARS
- #ifdef HeKUTF8
- #define HAS_UTF8_HASHES
-@@ -299,7 +300,7 @@ typedef STRLEN ntag_t;
- #ifdef HvPLACEHOLDERS
- #define HAS_RESTRICTED_HASHES
- #else
--#define HVhek_PLACEHOLD	0x200
-+#define HVhek_PLACEHOLD 0x200
- #define RESTRICTED_HASH_CROAK() CROAK(("Cannot retrieve restricted hash"))
- #endif
- 
-@@ -342,13 +343,13 @@ typedef union {
- /*
-  * Fields s_tainted and s_dirty are prefixed with s_ because Perl's include
-  * files remap tainted and dirty when threading is enabled.  That's bad for
-- * perl to remap such common words.	-- RAM, 29/09/00
-+ * perl to remap such common words.     -- RAM, 29/09/00
-  */
- 
- struct stcxt;
- typedef struct stcxt {
--    int entry;		/* flags recursion */
--    int optype;		/* type of traversal operation */
-+    int entry;          /* flags recursion */
-+    int optype;         /* type of traversal operation */
-     /* which objects have been seen, store time.
-        tags are numbers, which are cast to (SV *) and stored directly */
- #ifdef USE_PTR_TABLE
-@@ -359,38 +360,38 @@ typedef struct stcxt {
-     /* Still need hseen for the 0.6 file format code. */
- #endif
-     HV *hseen;
--    AV *hook_seen;		/* which SVs were returned by STORABLE_freeze() */
--    AV *aseen;			/* which objects have been seen, retrieve time */
--    ntag_t where_is_undef;		/* index in aseen of PL_sv_undef */
--    HV *hclass;			/* which classnames have been seen, store time */
--    AV *aclass;			/* which classnames have been seen, retrieve time */
--    HV *hook;			/* cache for hook methods per class name */
--    IV tagnum;			/* incremented at store time for each seen object */
--    IV classnum;		/* incremented at store time for each seen classname */
--    int netorder;		/* true if network order used */
--    int s_tainted;		/* true if input source is tainted, at retrieve time */
--    int forgive_me;		/* whether to be forgiving... */
--    int deparse;		/* whether to deparse code refs */
--    SV *eval;			/* whether to eval source code */
--    int canonical;		/* whether to store hashes sorted by key */
-+    AV *hook_seen;              /* which SVs were returned by STORABLE_freeze() */
-+    AV *aseen;                  /* which objects have been seen, retrieve time */
-+    ntag_t where_is_undef;              /* index in aseen of PL_sv_undef */
-+    HV *hclass;                 /* which classnames have been seen, store time */
-+    AV *aclass;                 /* which classnames have been seen, retrieve time */
-+    HV *hook;                   /* cache for hook methods per class name */
-+    IV tagnum;                  /* incremented at store time for each seen object */
-+    IV classnum;                /* incremented at store time for each seen classname */
-+    int netorder;               /* true if network order used */
-+    int s_tainted;              /* true if input source is tainted, at retrieve time */
-+    int forgive_me;             /* whether to be forgiving... */
-+    int deparse;                /* whether to deparse code refs */
-+    SV *eval;                   /* whether to eval source code */
-+    int canonical;              /* whether to store hashes sorted by key */
- #ifndef HAS_RESTRICTED_HASHES
--    int derestrict;		/* whether to downgrade restricted hashes */
-+    int derestrict;             /* whether to downgrade restricted hashes */
- #endif
- #ifndef HAS_UTF8_ALL
--    int use_bytes;		/* whether to bytes-ify utf8 */
--#endif
--    int accept_future_minor;	/* croak immediately on future minor versions?  */
--    int s_dirty;		/* context is dirty due to CROAK() -- can be cleaned */
--    int membuf_ro;		/* true means membuf is read-only and msaved is rw */
--    struct extendable keybuf;	/* for hash key retrieval */
--    struct extendable membuf;	/* for memory store/retrieve operations */
--    struct extendable msaved;	/* where potentially valid mbuf is saved */
--    PerlIO *fio;		/* where I/O are performed, NULL for memory */
--    int ver_major;		/* major of version for retrieved object */
--    int ver_minor;		/* minor of version for retrieved object */
--    SV *(**retrieve_vtbl)(pTHX_ struct stcxt *, const char *);	/* retrieve dispatch table */
--    SV *prev;			/* contexts chained backwards in real recursion */
--    SV *my_sv;			/* the blessed scalar who's SvPVX() I am */
-+    int use_bytes;              /* whether to bytes-ify utf8 */
-+#endif
-+    int accept_future_minor;    /* croak immediately on future minor versions?  */
-+    int s_dirty;                /* context is dirty due to CROAK() -- can be cleaned */
-+    int membuf_ro;              /* true means membuf is read-only and msaved is rw */
-+    struct extendable keybuf;   /* for hash key retrieval */
-+    struct extendable membuf;   /* for memory store/retrieve operations */
-+    struct extendable msaved;   /* where potentially valid mbuf is saved */
-+    PerlIO *fio;                /* where I/O are performed, NULL for memory */
-+    int ver_major;              /* major of version for retrieved object */
-+    int ver_minor;              /* minor of version for retrieved object */
-+    SV *(**retrieve_vtbl)(pTHX_ struct stcxt *, const char *);  /* retrieve dispatch table */
-+    SV *prev;                   /* contexts chained backwards in real recursion */
-+    SV *my_sv;                  /* the blessed scalar who's SvPVX() I am */
- 
-     /* recur_sv:
- 
-@@ -411,8 +412,8 @@ typedef struct stcxt {
-      */
-     SV *recur_sv;               /* check only one recursive SV */
-     int in_retrieve_overloaded; /* performance hack for retrieving overloaded objects */
--    int flags;			/* controls whether to bless or tie objects */
--    IV recur_depth;        	/* avoid stack overflows RT #97526 */
-+    int flags;                  /* controls whether to bless or tie objects */
-+    IV recur_depth;             /* avoid stack overflows RT #97526 */
-     IV max_recur_depth;        /* limit for recur_depth */
-     IV max_recur_depth_hash;   /* limit for recur_depth for hashes */
- #ifdef DEBUGME
-@@ -455,8 +456,8 @@ static MGVTBL vtbl_storable = {
- # define sv_magicext(sv, obj, type, vtbl, name, namlen)         \
-     THX_sv_magicext(aTHX_ sv, obj, type, vtbl, name, namlen)
- static MAGIC *THX_sv_magicext(pTHX_
--	SV *sv, SV *obj, int type,
--	MGVTBL const *vtbl, char const *name, I32 namlen)
-+        SV *sv, SV *obj, int type,
-+        MGVTBL const *vtbl, char const *name, I32 namlen)
- {
-     MAGIC *mg;
-     if (obj || namlen)
-@@ -476,8 +477,8 @@ static MAGIC *THX_sv_magicext(pTHX_
- }
- #endif
- 
--#define NEW_STORABLE_CXT_OBJ(cxt)				\
--    STMT_START {						\
-+#define NEW_STORABLE_CXT_OBJ(cxt)                               \
-+    STMT_START {                                                \
-         SV *self = newSV(sizeof(stcxt_t) - 1);                  \
-         SV *my_sv = newRV_noinc(self);                          \
-         sv_magicext(self, NULL, PERL_MAGIC_ext, &vtbl_storable, NULL, 0); \
-@@ -488,26 +489,26 @@ static MAGIC *THX_sv_magicext(pTHX_
- 
- #if defined(MULTIPLICITY) || defined(PERL_OBJECT) || defined(PERL_CAPI)
- 
--#define dSTCXT_SV						\
-+#define dSTCXT_SV                                               \
-     SV *perinterp_sv = *hv_fetch(PL_modglobal,                  \
--				 MY_VERSION, sizeof(MY_VERSION)-1, TRUE)
-+                                 MY_VERSION, sizeof(MY_VERSION)-1, TRUE)
- 
--#define dSTCXT_PTR(T,name)					\
-+#define dSTCXT_PTR(T,name)                                      \
-     T name = ((perinterp_sv                                     \
-                && SvIOK(perinterp_sv) && SvIVX(perinterp_sv)    \
-                ? (T)SvPVX(SvRV(INT2PTR(SV*,SvIVX(perinterp_sv)))) : (T) 0))
--#define dSTCXT					\
-+#define dSTCXT                                  \
-     dSTCXT_SV;                                  \
-     dSTCXT_PTR(stcxt_t *, cxt)
- 
--#define INIT_STCXT					\
-+#define INIT_STCXT                                      \
-     dSTCXT;                                             \
-     NEW_STORABLE_CXT_OBJ(cxt);                          \
--    assert(perinterp_sv);				\
-+    assert(perinterp_sv);                               \
-     sv_setiv(perinterp_sv, PTR2IV(cxt->my_sv))
- 
--#define SET_STCXT(x)					\
--    STMT_START {					\
-+#define SET_STCXT(x)                                    \
-+    STMT_START {                                        \
-         dSTCXT_SV;                                      \
-         sv_setiv(perinterp_sv, PTR2IV(x->my_sv));       \
-     } STMT_END
-@@ -515,9 +516,9 @@ static MAGIC *THX_sv_magicext(pTHX_
- #else /* !MULTIPLICITY && !PERL_OBJECT && !PERL_CAPI */
- 
- static stcxt_t *Context_ptr = NULL;
--#define dSTCXT			stcxt_t *cxt = Context_ptr
--#define SET_STCXT(x)		Context_ptr = x
--#define INIT_STCXT				\
-+#define dSTCXT                  stcxt_t *cxt = Context_ptr
-+#define SET_STCXT(x)            Context_ptr = x
-+#define INIT_STCXT                              \
-     dSTCXT;                                     \
-     NEW_STORABLE_CXT_OBJ(cxt);                  \
-     SET_STCXT(cxt)
-@@ -542,7 +543,7 @@ static stcxt_t *Context_ptr = NULL;
-  * but the topmost context stacked.
-  */
- 
--#define CROAK(x)	STMT_START { cxt->s_dirty = 1; croak x; } STMT_END
-+#define CROAK(x)        STMT_START { cxt->s_dirty = 1; croak x; } STMT_END
- 
- /*
-  * End of "thread-safe" related definitions.
-@@ -556,9 +557,9 @@ static stcxt_t *Context_ptr = NULL;
-  */
- 
- #if PTRSIZE <= 4
--#define LOW_32BITS(x)	((I32) (x))
-+#define LOW_32BITS(x)   ((I32) (x))
- #else
--#define LOW_32BITS(x)	((I32) ((STRLEN) (x) & 0xffffffffUL))
-+#define LOW_32BITS(x)   ((I32) ((STRLEN) (x) & 0xffffffffUL))
- #endif
- 
- /*
-@@ -579,33 +580,33 @@ static stcxt_t *Context_ptr = NULL;
-  */
- 
- #if INTSIZE > 4
--#define oI(x)	((I32 *) ((char *) (x) + 4))
--#define oS(x)	((x) - 4)
--#define oL(x)	(x)
--#define oC(x)	(x = 0)
-+#define oI(x)   ((I32 *) ((char *) (x) + 4))
-+#define oS(x)   ((x) - 4)
-+#define oL(x)   (x)
-+#define oC(x)   (x = 0)
- #define CRAY_HACK
- #else
--#define oI(x)	(x)
--#define oS(x)	(x)
--#define oL(x)	(x)
-+#define oI(x)   (x)
-+#define oS(x)   (x)
-+#define oL(x)   (x)
- #define oC(x)
- #endif
- 
- /*
-  * key buffer handling
-  */
--#define kbuf	(cxt->keybuf).arena
--#define ksiz	(cxt->keybuf).asiz
--#define KBUFINIT()							\
--    STMT_START {							\
-+#define kbuf    (cxt->keybuf).arena
-+#define ksiz    (cxt->keybuf).asiz
-+#define KBUFINIT()                                                      \
-+    STMT_START {                                                        \
-         if (!kbuf) {                                                    \
-             TRACEME(("** allocating kbuf of 128 bytes"));               \
-             New(10003, kbuf, 128, char);                                \
-             ksiz = 128;                                                 \
-         }                                                               \
-     } STMT_END
--#define KBUFCHK(x)							\
--    STMT_START {							\
-+#define KBUFCHK(x)                                                      \
-+    STMT_START {                                                        \
-         if (x >= ksiz) {                                                \
-             if (x >= I32_MAX)                                           \
-                 CROAK(("Too large size > I32_MAX"));                    \
-@@ -619,23 +620,23 @@ static stcxt_t *Context_ptr = NULL;
- /*
-  * memory buffer handling
-  */
--#define mbase	(cxt->membuf).arena
--#define msiz	(cxt->membuf).asiz
--#define mptr	(cxt->membuf).aptr
--#define mend	(cxt->membuf).aend
-+#define mbase   (cxt->membuf).arena
-+#define msiz    (cxt->membuf).asiz
-+#define mptr    (cxt->membuf).aptr
-+#define mend    (cxt->membuf).aend
- 
--#define MGROW	(1 << 13)
--#define MMASK	(MGROW - 1)
-+#define MGROW   (1 << 13)
-+#define MMASK   (MGROW - 1)
- 
--#define round_mgrow(x)	\
-+#define round_mgrow(x)  \
-     ((STRLEN) (((STRLEN) (x) + MMASK) & ~MMASK))
--#define trunc_int(x)	\
-+#define trunc_int(x)    \
-     ((STRLEN) ((STRLEN) (x) & ~(sizeof(int)-1)))
--#define int_aligned(x)	\
-+#define int_aligned(x)  \
-     ((STRLEN)(x) == trunc_int(x))
- 
--#define MBUF_INIT(x)							\
--    STMT_START {							\
-+#define MBUF_INIT(x)                                                    \
-+    STMT_START {                                                        \
-         if (!mbase) {                                                   \
-             TRACEME(("** allocating mbase of %d bytes", MGROW));        \
-             New(10003, mbase, (int)MGROW, char);                        \
-@@ -648,8 +649,8 @@ static stcxt_t *Context_ptr = NULL;
-             mend = mbase + msiz;                                        \
-     } STMT_END
- 
--#define MBUF_TRUNC(x)	mptr = mbase + x
--#define MBUF_SIZE()	(mptr - mbase)
-+#define MBUF_TRUNC(x)   mptr = mbase + x
-+#define MBUF_SIZE()     (mptr - mbase)
- 
- /*
-  * MBUF_SAVE_AND_LOAD
-@@ -659,8 +660,8 @@ static stcxt_t *Context_ptr = NULL;
-  * buffer into cxt->msaved, before MBUF_LOAD() can be used to retrieve
-  * data from a string.
-  */
--#define MBUF_SAVE_AND_LOAD(in)						\
--    STMT_START {							\
-+#define MBUF_SAVE_AND_LOAD(in)                                          \
-+    STMT_START {                                                        \
-         ASSERT(!cxt->membuf_ro, ("mbase not already saved"));           \
-         cxt->membuf_ro = 1;                                             \
-         TRACEME(("saving mbuf"));                                       \
-@@ -668,8 +669,8 @@ static stcxt_t *Context_ptr = NULL;
-         MBUF_LOAD(in);                                                  \
-     } STMT_END
- 
--#define MBUF_RESTORE()							\
--    STMT_START {							\
-+#define MBUF_RESTORE()                                                  \
-+    STMT_START {                                                        \
-         ASSERT(cxt->membuf_ro, ("mbase is read-only"));                 \
-         cxt->membuf_ro = 0;                                             \
-         TRACEME(("restoring mbuf"));                                    \
-@@ -680,8 +681,8 @@ static stcxt_t *Context_ptr = NULL;
-  * Use SvPOKp(), because SvPOK() fails on tainted scalars.
-  * See store_scalar() for other usage of this workaround.
-  */
--#define MBUF_LOAD(v)						\
--    STMT_START {						\
-+#define MBUF_LOAD(v)                                            \
-+    STMT_START {                                                \
-         ASSERT(cxt->membuf_ro, ("mbase is read-only"));         \
-         if (!SvPOKp(v))                                         \
-             CROAK(("Not a scalar string"));                     \
-@@ -689,8 +690,8 @@ static stcxt_t *Context_ptr = NULL;
-         mend = mbase + msiz;                                    \
-     } STMT_END
- 
--#define MBUF_XTEND(x)						\
--    STMT_START {						\
-+#define MBUF_XTEND(x)                                           \
-+    STMT_START {                                                \
-         STRLEN nsz = (STRLEN) round_mgrow((x)+msiz);            \
-         STRLEN offset = mptr - mbase;                           \
-         ASSERT(!cxt->membuf_ro, ("mbase is not read-only"));    \
-@@ -702,14 +703,14 @@ static stcxt_t *Context_ptr = NULL;
-         mend = mbase + nsz;                                     \
-     } STMT_END
- 
--#define MBUF_CHK(x)				\
--    STMT_START {				\
-+#define MBUF_CHK(x)                             \
-+    STMT_START {                                \
-         if ((mptr + (x)) > mend)                \
-             MBUF_XTEND(x);                      \
-     } STMT_END
- 
--#define MBUF_GETC(x)				\
--    STMT_START {				\
-+#define MBUF_GETC(x)                            \
-+    STMT_START {                                \
-         if (mptr < mend)                        \
-             x = (int) (unsigned char) *mptr++;  \
-         else                                    \
-@@ -717,8 +718,8 @@ static stcxt_t *Context_ptr = NULL;
-     } STMT_END
- 
- #ifdef CRAY_HACK
--#define MBUF_GETINT(x)				\
--    STMT_START {				\
-+#define MBUF_GETINT(x)                          \
-+    STMT_START {                                \
-         oC(x);                                  \
-         if ((mptr + 4) <= mend) {               \
-             memcpy(oI(&x), mptr, 4);            \
-@@ -727,8 +728,8 @@ static stcxt_t *Context_ptr = NULL;
-             return (SV *) 0;                    \
-     } STMT_END
- #else
--#define MBUF_GETINT(x)				\
--    STMT_START {				\
-+#define MBUF_GETINT(x)                          \
-+    STMT_START {                                \
-         if ((mptr + sizeof(int)) <= mend) {     \
-             if (int_aligned(mptr))              \
-                 x = *(int *) mptr;              \
-@@ -740,8 +741,8 @@ static stcxt_t *Context_ptr = NULL;
-     } STMT_END
- #endif
- 
--#define MBUF_READ(x,s)				\
--    STMT_START {				\
-+#define MBUF_READ(x,s)                          \
-+    STMT_START {                                \
-         if ((mptr + (s)) <= mend) {             \
-             memcpy(x, mptr, s);                 \
-             mptr += s;                          \
-@@ -749,8 +750,8 @@ static stcxt_t *Context_ptr = NULL;
-             return (SV *) 0;                    \
-     } STMT_END
- 
--#define MBUF_SAFEREAD(x,s,z)			\
--    STMT_START {				\
-+#define MBUF_SAFEREAD(x,s,z)                    \
-+    STMT_START {                                \
-         if ((mptr + (s)) <= mend) {             \
-             memcpy(x, mptr, s);                 \
-             mptr += s;                          \
-@@ -760,8 +761,8 @@ static stcxt_t *Context_ptr = NULL;
-         }                                       \
-     } STMT_END
- 
--#define MBUF_SAFEPVREAD(x,s,z)			\
--    STMT_START {				\
-+#define MBUF_SAFEPVREAD(x,s,z)                  \
-+    STMT_START {                                \
-         if ((mptr + (s)) <= mend) {             \
-             memcpy(x, mptr, s);                 \
-             mptr += s;                          \
-@@ -771,8 +772,8 @@ static stcxt_t *Context_ptr = NULL;
-         }                                       \
-     } STMT_END
- 
--#define MBUF_PUTC(c)				\
--    STMT_START {				\
-+#define MBUF_PUTC(c)                            \
-+    STMT_START {                                \
-         if (mptr < mend)                        \
-             *mptr++ = (char) c;                 \
-         else {                                  \
-@@ -782,15 +783,15 @@ static stcxt_t *Context_ptr = NULL;
-     } STMT_END
- 
- #ifdef CRAY_HACK
--#define MBUF_PUTINT(i)				\
--    STMT_START {				\
-+#define MBUF_PUTINT(i)                          \
-+    STMT_START {                                \
-         MBUF_CHK(4);                            \
-         memcpy(mptr, oI(&i), 4);                \
-         mptr += 4;                              \
-     } STMT_END
- #else
--#define MBUF_PUTINT(i) 				\
--    STMT_START {				\
-+#define MBUF_PUTINT(i)                          \
-+    STMT_START {                                \
-         MBUF_CHK(sizeof(int));                  \
-         if (int_aligned(mptr))                  \
-             *(int *) mptr = i;                  \
-@@ -800,14 +801,14 @@ static stcxt_t *Context_ptr = NULL;
-     } STMT_END
- #endif
- 
--#define MBUF_PUTLONG(l)				\
--    STMT_START {				\
-+#define MBUF_PUTLONG(l)                         \
-+    STMT_START {                                \
-         MBUF_CHK(8);                            \
-         memcpy(mptr, &l, 8);                    \
-         mptr += 8;                              \
-     } STMT_END
--#define MBUF_WRITE(x,s)				\
--    STMT_START {				\
-+#define MBUF_WRITE(x,s)                         \
-+    STMT_START {                                \
-         MBUF_CHK(s);                            \
-         memcpy(mptr, x, s);                     \
-         mptr += s;                              \
-@@ -817,60 +818,60 @@ static stcxt_t *Context_ptr = NULL;
-  * Possible return values for sv_type().
-  */
- 
--#define svis_REF		0
--#define svis_SCALAR		1
--#define svis_ARRAY		2
--#define svis_HASH		3
--#define svis_TIED		4
--#define svis_TIED_ITEM		5
--#define svis_CODE		6
--#define svis_REGEXP		7
--#define svis_OTHER		8
-+#define svis_REF                0
-+#define svis_SCALAR             1
-+#define svis_ARRAY              2
-+#define svis_HASH               3
-+#define svis_TIED               4
-+#define svis_TIED_ITEM          5
-+#define svis_CODE               6
-+#define svis_REGEXP             7
-+#define svis_OTHER              8
- 
- /*
-  * Flags for SX_HOOK.
-  */
- 
--#define SHF_TYPE_MASK		0x03
--#define SHF_LARGE_CLASSLEN	0x04
--#define SHF_LARGE_STRLEN	0x08
--#define SHF_LARGE_LISTLEN	0x10
--#define SHF_IDX_CLASSNAME	0x20
--#define SHF_NEED_RECURSE	0x40
--#define SHF_HAS_LIST		0x80
-+#define SHF_TYPE_MASK           0x03
-+#define SHF_LARGE_CLASSLEN      0x04
-+#define SHF_LARGE_STRLEN        0x08
-+#define SHF_LARGE_LISTLEN       0x10
-+#define SHF_IDX_CLASSNAME       0x20
-+#define SHF_NEED_RECURSE        0x40
-+#define SHF_HAS_LIST            0x80
- 
- /*
-  * Types for SX_HOOK (last 2 bits in flags).
-  */
- 
--#define SHT_SCALAR		0
--#define SHT_ARRAY		1
--#define SHT_HASH		2
--#define SHT_EXTRA		3	/* Read extra byte for type */
-+#define SHT_SCALAR              0
-+#define SHT_ARRAY               1
-+#define SHT_HASH                2
-+#define SHT_EXTRA               3       /* Read extra byte for type */
- 
- /*
-  * The following are held in the "extra byte"...
-  */
- 
--#define SHT_TSCALAR		4	/* 4 + 0 -- tied scalar */
--#define SHT_TARRAY		5	/* 4 + 1 -- tied array */
--#define SHT_THASH		6	/* 4 + 2 -- tied hash */
-+#define SHT_TSCALAR             4       /* 4 + 0 -- tied scalar */
-+#define SHT_TARRAY              5       /* 4 + 1 -- tied array */
-+#define SHT_THASH               6       /* 4 + 2 -- tied hash */
- 
- /*
-  * per hash flags for flagged hashes
-  */
- 
--#define SHV_RESTRICTED		0x01
-+#define SHV_RESTRICTED          0x01
- 
- /*
-  * per key flags for flagged hashes
-  */
- 
--#define SHV_K_UTF8		0x01
--#define SHV_K_WASUTF8		0x02
--#define SHV_K_LOCKED		0x04
--#define SHV_K_ISSV		0x08
--#define SHV_K_PLACEHOLDER	0x10
-+#define SHV_K_UTF8              0x01
-+#define SHV_K_WASUTF8           0x02
-+#define SHV_K_LOCKED            0x04
-+#define SHV_K_ISSV              0x08
-+#define SHV_K_PLACEHOLDER       0x10
- 
- /*
-  * flags to allow blessing and/or tieing data the data we load
-@@ -882,7 +883,7 @@ static stcxt_t *Context_ptr = NULL;
-  * Flags for SX_REGEXP.
-  */
- 
--#define SHR_U32_RE_LEN		0x01
-+#define SHR_U32_RE_LEN          0x01
- 
- /*
-  * Before 0.6, the magic string was "perl-store" (binary version number 0).
-@@ -898,10 +899,10 @@ static stcxt_t *Context_ptr = NULL;
-  * spot errors if a file making use of 0.7-specific extensions is given to
-  * 0.6 for retrieval, the binary version was moved to "2".  And I'm introducing
-  * a "minor" version, to better track this kind of evolution from now on.
-- * 
-+ *
-  */
- static const char old_magicstr[] = "perl-store"; /* Magic number before 0.6 */
--static const char magicstr[] = "pst0";		 /* Used as a magic number */
-+static const char magicstr[] = "pst0";           /* Used as a magic number */
- 
- #define MAGICSTR_BYTES  'p','s','t','0'
- #define OLDMAGICSTR_BYTES  'p','e','r','l','-','s','t','o','r','e'
-@@ -971,20 +972,20 @@ static const char byteorderstr[] = {BYTEORDER_BYTES, 0};
- static const char byteorderstr_56[] = {BYTEORDER_BYTES_56, 0};
- #endif
- 
--#define STORABLE_BIN_MAJOR	2		/* Binary major "version" */
--#define STORABLE_BIN_MINOR	12		/* Binary minor "version" */
-+#define STORABLE_BIN_MAJOR      2               /* Binary major "version" */
-+#define STORABLE_BIN_MINOR      12              /* Binary minor "version" */
- 
- #if !defined (SvVOK)
- /*
-  * Perl 5.6.0-5.8.0 can do weak references, but not vstring magic.
- */
--#define STORABLE_BIN_WRITE_MINOR	8
-+#define STORABLE_BIN_WRITE_MINOR        8
- #elif PERL_VERSION_GE(5,19,0)
- /* Perl 5.19 takes away the special meaning of PL_sv_undef in arrays. */
- /* With 3.x we added LOBJECT */
--#define STORABLE_BIN_WRITE_MINOR	11
-+#define STORABLE_BIN_WRITE_MINOR        11
- #else
--#define STORABLE_BIN_WRITE_MINOR	9
-+#define STORABLE_BIN_WRITE_MINOR        9
- #endif
- 
- #if PERL_VERSION_LT(5,8,1)
-@@ -1002,16 +1003,16 @@ static const char byteorderstr_56[] = {BYTEORDER_BYTES_56, 0};
-  * tagnum with cxt->tagnum++ along with this macro!
-  *     - samv 20Jan04
-  */
--#define PUTMARK(x) 					\
--    STMT_START {					\
-+#define PUTMARK(x)                                      \
-+    STMT_START {                                        \
-         if (!cxt->fio)                                  \
-             MBUF_PUTC(x);                               \
-         else if (PerlIO_putc(cxt->fio, x) == EOF)       \
-             return -1;                                  \
-     } STMT_END
- 
--#define WRITE_I32(x)						\
--    STMT_START {						\
-+#define WRITE_I32(x)                                            \
-+    STMT_START {                                                \
-         ASSERT(sizeof(x) == sizeof(I32), ("writing an I32"));   \
-         if (!cxt->fio)                                          \
-             MBUF_PUTINT(x);                                     \
-@@ -1020,9 +1021,9 @@ static const char byteorderstr_56[] = {BYTEORDER_BYTES_56, 0};
-             return -1;                                          \
-     } STMT_END
- 
--#define WRITE_U64(x)							\
--    STMT_START {							\
--        ASSERT(sizeof(x) == sizeof(UV), ("writing an UV"));		\
-+#define WRITE_U64(x)                                                    \
-+    STMT_START {                                                        \
-+        ASSERT(sizeof(x) == sizeof(UV), ("writing an UV"));             \
-         if (!cxt->fio)                                                  \
-             MBUF_PUTLONG(x);                                            \
-         else if (PerlIO_write(cxt->fio, oL(&x),                         \
-@@ -1032,7 +1033,7 @@ static const char byteorderstr_56[] = {BYTEORDER_BYTES_56, 0};
- 
- #ifdef HAS_HTONL
- #define WLEN(x)                                                         \
--    STMT_START {							\
-+    STMT_START {                                                        \
-         ASSERT(sizeof(x) == sizeof(int), ("WLEN writing an int"));      \
-         if (cxt->netorder) {                                            \
-             int y = (int) htonl(x);                                     \
-@@ -1051,11 +1052,11 @@ static const char byteorderstr_56[] = {BYTEORDER_BYTES_56, 0};
- 
- #  ifdef HAS_U64
- 
--#define W64LEN(x)							\
--    STMT_START {							\
-+#define W64LEN(x)                                                       \
-+    STMT_START {                                                        \
-         ASSERT(sizeof(x) == 8, ("W64LEN writing a U64"));               \
-         if (cxt->netorder) {                                            \
--            U32 buf[2];      						\
-+            U32 buf[2];                                                 \
-             buf[1] = htonl(x & 0xffffffffUL);                           \
-             buf[0] = htonl(x >> 32);                                    \
-             if (!cxt->fio)                                              \
-@@ -1079,7 +1080,7 @@ static const char byteorderstr_56[] = {BYTEORDER_BYTES_56, 0};
- #  endif
- 
- #else
--#define WLEN(x)	WRITE_I32(x)
-+#define WLEN(x) WRITE_I32(x)
- #ifdef HAS_U64
- #define W64LEN(x) WRITE_U64(x)
- #else
-@@ -1087,16 +1088,16 @@ static const char byteorderstr_56[] = {BYTEORDER_BYTES_56, 0};
- #endif
- #endif
- 
--#define WRITE(x,y) 							\
--    STMT_START {							\
-+#define WRITE(x,y)                                                      \
-+    STMT_START {                                                        \
-         if (!cxt->fio)                                                  \
-             MBUF_WRITE(x,y);                                            \
-         else if (PerlIO_write(cxt->fio, x, y) != (SSize_t)y)            \
-             return -1;                                                  \
-     } STMT_END
- 
--#define STORE_PV_LEN(pv, len, small, large)			\
--    STMT_START {						\
-+#define STORE_PV_LEN(pv, len, small, large)                     \
-+    STMT_START {                                                \
-         if (len <= LG_SCALAR) {                                 \
-             int ilen = (int) len;                               \
-             unsigned char clen = (unsigned char) len;           \
-@@ -1117,17 +1118,17 @@ static const char byteorderstr_56[] = {BYTEORDER_BYTES_56, 0};
-         }                                                       \
-     } STMT_END
- 
--#define STORE_SCALAR(pv, len)	STORE_PV_LEN(pv, len, SX_SCALAR, SX_LSCALAR)
-+#define STORE_SCALAR(pv, len)   STORE_PV_LEN(pv, len, SX_SCALAR, SX_LSCALAR)
- 
- /*
-  * Store &PL_sv_undef in arrays without recursing through store().  We
-  * actually use this to represent nonexistent elements, for historical
-  * reasons.
-  */
--#define STORE_SV_UNDEF() 					\
-+#define STORE_SV_UNDEF()                                        \
-     STMT_START {                                                \
--	cxt->tagnum++;						\
--	PUTMARK(SX_SV_UNDEF);					\
-+        cxt->tagnum++;                                          \
-+        PUTMARK(SX_SV_UNDEF);                                   \
-     } STMT_END
- 
- /*
-@@ -1138,16 +1139,16 @@ static const char byteorderstr_56[] = {BYTEORDER_BYTES_56, 0};
-     (cxt->fio ? PerlIO_getc(cxt->fio)                   \
-               : (mptr >= mend ? EOF : (int) *mptr++))
- 
--#define GETMARK(x)							\
--    STMT_START {							\
-+#define GETMARK(x)                                                      \
-+    STMT_START {                                                        \
-         if (!cxt->fio)                                                  \
-             MBUF_GETC(x);                                               \
-         else if ((int) (x = PerlIO_getc(cxt->fio)) == EOF)              \
-             return (SV *) 0;                                            \
-     } STMT_END
- 
--#define READ_I32(x)							\
--    STMT_START {							\
-+#define READ_I32(x)                                                     \
-+    STMT_START {                                                        \
-         ASSERT(sizeof(x) == sizeof(I32), ("reading an I32"));           \
-         oC(x);                                                          \
-         if (!cxt->fio)                                                  \
-@@ -1159,7 +1160,7 @@ static const char byteorderstr_56[] = {BYTEORDER_BYTES_56, 0};
- 
- #ifdef HAS_NTOHL
- #define RLEN(x)                                                         \
--    STMT_START {							\
-+    STMT_START {                                                        \
-         oC(x);                                                          \
-         if (!cxt->fio)                                                  \
-             MBUF_GETINT(x);                                             \
-@@ -1173,16 +1174,16 @@ static const char byteorderstr_56[] = {BYTEORDER_BYTES_56, 0};
- #define RLEN(x) READ_I32(x)
- #endif
- 
--#define READ(x,y) 							\
--    STMT_START {							\
--	if (!cxt->fio)							\
-+#define READ(x,y)                                                       \
-+    STMT_START {                                                        \
-+        if (!cxt->fio)                                                  \
-             MBUF_READ(x, y);                                            \
--	else if (PerlIO_read(cxt->fio, x, y) != (SSize_t)y)             \
-+        else if (PerlIO_read(cxt->fio, x, y) != (SSize_t)y)             \
-             return (SV *) 0;                                            \
-     } STMT_END
- 
- #define SAFEREAD(x,y,z)                                                 \
--    STMT_START {							\
-+    STMT_START {                                                        \
-         if (!cxt->fio)                                                  \
-             MBUF_SAFEREAD(x,y,z);                                       \
-         else if (PerlIO_read(cxt->fio, x, y) != (SSize_t)y) {           \
-@@ -1191,8 +1192,8 @@ static const char byteorderstr_56[] = {BYTEORDER_BYTES_56, 0};
-         }                                                               \
-     } STMT_END
- 
--#define SAFEPVREAD(x,y,z)					\
--    STMT_START {						\
-+#define SAFEPVREAD(x,y,z)                                       \
-+    STMT_START {                                                \
-         if (!cxt->fio)                                          \
-             MBUF_SAFEPVREAD(x,y,z);                             \
-         else if (PerlIO_read(cxt->fio, x, y) != y) {            \
-@@ -1210,21 +1211,21 @@ static const char byteorderstr_56[] = {BYTEORDER_BYTES_56, 0};
- #  else
- static U32 Sntohl(U32 x) {
-     return (((U8) x) << 24) + ((x & 0xFF00) << 8)
--	+ ((x & 0xFF0000) >> 8) + ((x & 0xFF000000) >> 24);
-+        + ((x & 0xFF0000) >> 8) + ((x & 0xFF000000) >> 24);
- }
- #  endif
- 
- #  define READ_U64(x)                                                       \
-     STMT_START {                                                          \
--	ASSERT(sizeof(x) == 8, ("R64LEN reading a U64"));                 \
--	if (cxt->netorder) {                                              \
--	    U32 buf[2];                                                   \
--	    READ((void *)buf, sizeof(buf));                               \
--	    (x) = ((UV)Sntohl(buf[0]) << 32) + Sntohl(buf[1]);		\
--	}                                                                 \
--	else {                                                            \
--	    READ(&(x), sizeof(x));                                        \
--	}                                                                 \
-+        ASSERT(sizeof(x) == 8, ("R64LEN reading a U64"));                 \
-+        if (cxt->netorder) {                                              \
-+            U32 buf[2];                                                   \
-+            READ((void *)buf, sizeof(buf));                               \
-+            (x) = ((UV)Sntohl(buf[0]) << 32) + Sntohl(buf[1]);          \
-+        }                                                                 \
-+        else {                                                            \
-+            READ(&(x), sizeof(x));                                        \
-+        }                                                                 \
-     } STMT_END
- 
- #endif
-@@ -1253,8 +1254,8 @@ static U32 Sntohl(U32 x) {
-  *
-  * The _NN variants dont check for y being null
-  */
--#define SEEN0_NN(y,i)							\
--    STMT_START {							\
-+#define SEEN0_NN(y,i)                                                   \
-+    STMT_START {                                                        \
-         if (av_store(cxt->aseen, cxt->tagnum++, i ? (SV*)(y)            \
-                      : SvREFCNT_inc(y)) == 0)                           \
-             return (SV *) 0;                                            \
-@@ -1263,22 +1264,22 @@ static U32 Sntohl(U32 x) {
-                  PTR2UV(y), (int)SvREFCNT(y)-1));                       \
-     } STMT_END
- 
--#define SEEN0(y,i)							\
--    STMT_START {							\
-+#define SEEN0(y,i)                                                      \
-+    STMT_START {                                                        \
-         if (!y)                                                         \
-             return (SV *) 0;                                            \
-         SEEN0_NN(y,i);                                                  \
-     } STMT_END
- 
--#define SEEN_NN(y,stash,i)						\
--    STMT_START {							\
-+#define SEEN_NN(y,stash,i)                                              \
-+    STMT_START {                                                        \
-         SEEN0_NN(y,i);                                                  \
--        if (stash)							\
-+        if (stash)                                                      \
-             BLESS((SV *)(y), (HV *)(stash));                            \
-     } STMT_END
- 
--#define SEEN(y,stash,i)							\
--    STMT_START {                                                	\
-+#define SEEN(y,stash,i)                                                 \
-+    STMT_START {                                                        \
-         if (!y)                                                         \
-             return (SV *) 0;                                            \
-         SEEN_NN(y,stash, i);                                            \
-@@ -1289,8 +1290,8 @@ static U32 Sntohl(U32 x) {
-  * "A" magic is added before the sv_bless for overloaded classes, this avoids
-  * an expensive call to S_reset_amagic in sv_bless.
-  */
--#define BLESS(s,stash)							\
--    STMT_START {							\
-+#define BLESS(s,stash)                                                  \
-+    STMT_START {                                                        \
-         SV *ref;                                                        \
-         if (cxt->flags & FLAG_BLESS_OK) {                               \
-             TRACEME(("blessing 0x%" UVxf " in %s", PTR2UV(s),           \
-@@ -1318,7 +1319,7 @@ static U32 Sntohl(U32 x) {
- 
- #if defined(USE_ITHREADS)
- 
--#define STORE_HASH_SORT						\
-+#define STORE_HASH_SORT                                         \
-     ENTER; {                                                    \
-         PerlInterpreter *orig_perl = PERL_GET_CONTEXT;          \
-         SAVESPTR(orig_perl);                                    \
-@@ -1328,7 +1329,7 @@ static U32 Sntohl(U32 x) {
- 
- #else /* ! USE_ITHREADS */
- 
--#define STORE_HASH_SORT					\
-+#define STORE_HASH_SORT                                 \
-     qsort((char *) AvARRAY(av), len, sizeof(SV *), sortcmp);
- 
- #endif  /* USE_ITHREADS */
-@@ -1343,8 +1344,8 @@ static U32 Sntohl(U32 x) {
- static int store(pTHX_ stcxt_t *cxt, SV *sv);
- static SV *retrieve(pTHX_ stcxt_t *cxt, const char *cname);
- 
--#define UNSEE()			\
--    STMT_START {			\
-+#define UNSEE()                 \
-+    STMT_START {                        \
-         av_pop(cxt->aseen);             \
-         cxt->tagnum--;                  \
-     } STMT_END
-@@ -1367,18 +1368,18 @@ static int store_blessed(pTHX_ stcxt_t *cxt, SV *sv, int type, HV *pkg);
- typedef int (*sv_store_t)(pTHX_ stcxt_t *cxt, SV *sv);
- 
- static const sv_store_t sv_store[] = {
--    (sv_store_t)store_ref,	/* svis_REF */
--    (sv_store_t)store_scalar,	/* svis_SCALAR */
--    (sv_store_t)store_array,	/* svis_ARRAY */
--    (sv_store_t)store_hash,	/* svis_HASH */
--    (sv_store_t)store_tied,	/* svis_TIED */
-+    (sv_store_t)store_ref,      /* svis_REF */
-+    (sv_store_t)store_scalar,   /* svis_SCALAR */
-+    (sv_store_t)store_array,    /* svis_ARRAY */
-+    (sv_store_t)store_hash,     /* svis_HASH */
-+    (sv_store_t)store_tied,     /* svis_TIED */
-     (sv_store_t)store_tied_item,/* svis_TIED_ITEM */
--    (sv_store_t)store_code,	/* svis_CODE */
--    (sv_store_t)store_regexp,	/* svis_REGEXP */
--    (sv_store_t)store_other,	/* svis_OTHER */
-+    (sv_store_t)store_code,     /* svis_CODE */
-+    (sv_store_t)store_regexp,   /* svis_REGEXP */
-+    (sv_store_t)store_other,    /* svis_OTHER */
- };
- 
--#define SV_STORE(x)	(*sv_store[x])
-+#define SV_STORE(x)     (*sv_store[x])
- 
- /*
-  * Dynamic dispatching tables for SV retrieval.
-@@ -1417,43 +1418,43 @@ static int store_hentry(pTHX_ stcxt_t *cxt, HV* hv, UV i, HEK *hek, SV *val,
- typedef SV* (*sv_retrieve_t)(pTHX_ stcxt_t *cxt, const char *name);
- 
- static const sv_retrieve_t sv_old_retrieve[] = {
--    0,					/* SX_OBJECT -- entry unused dynamically */
--    (sv_retrieve_t)retrieve_lscalar,	/* SX_LSCALAR */
--    (sv_retrieve_t)old_retrieve_array,	/* SX_ARRAY -- for pre-0.6 binaries */
--    (sv_retrieve_t)old_retrieve_hash,	/* SX_HASH -- for pre-0.6 binaries */
--    (sv_retrieve_t)retrieve_ref,	/* SX_REF */
--    (sv_retrieve_t)retrieve_undef,	/* SX_UNDEF */
--    (sv_retrieve_t)retrieve_integer,	/* SX_INTEGER */
--    (sv_retrieve_t)retrieve_double,	/* SX_DOUBLE */
--    (sv_retrieve_t)retrieve_byte,	/* SX_BYTE */
--    (sv_retrieve_t)retrieve_netint,	/* SX_NETINT */
--    (sv_retrieve_t)retrieve_scalar,	/* SX_SCALAR */
--    (sv_retrieve_t)retrieve_tied_array,	/* SX_TIED_ARRAY */
--    (sv_retrieve_t)retrieve_tied_hash,	/* SX_TIED_HASH */
-+    0,                                  /* SX_OBJECT -- entry unused dynamically */
-+    (sv_retrieve_t)retrieve_lscalar,    /* SX_LSCALAR */
-+    (sv_retrieve_t)old_retrieve_array,  /* SX_ARRAY -- for pre-0.6 binaries */
-+    (sv_retrieve_t)old_retrieve_hash,   /* SX_HASH -- for pre-0.6 binaries */
-+    (sv_retrieve_t)retrieve_ref,        /* SX_REF */
-+    (sv_retrieve_t)retrieve_undef,      /* SX_UNDEF */
-+    (sv_retrieve_t)retrieve_integer,    /* SX_INTEGER */
-+    (sv_retrieve_t)retrieve_double,     /* SX_DOUBLE */
-+    (sv_retrieve_t)retrieve_byte,       /* SX_BYTE */
-+    (sv_retrieve_t)retrieve_netint,     /* SX_NETINT */
-+    (sv_retrieve_t)retrieve_scalar,     /* SX_SCALAR */
-+    (sv_retrieve_t)retrieve_tied_array, /* SX_TIED_ARRAY */
-+    (sv_retrieve_t)retrieve_tied_hash,  /* SX_TIED_HASH */
-     (sv_retrieve_t)retrieve_tied_scalar,/* SX_TIED_SCALAR */
--    (sv_retrieve_t)retrieve_other,	/* SX_SV_UNDEF not supported */
--    (sv_retrieve_t)retrieve_other,	/* SX_SV_YES not supported */
--    (sv_retrieve_t)retrieve_other,	/* SX_SV_NO not supported */
--    (sv_retrieve_t)retrieve_other,	/* SX_BLESS not supported */
--    (sv_retrieve_t)retrieve_other,	/* SX_IX_BLESS not supported */
--    (sv_retrieve_t)retrieve_other,	/* SX_HOOK not supported */
--    (sv_retrieve_t)retrieve_other,	/* SX_OVERLOADED not supported */
--    (sv_retrieve_t)retrieve_other,	/* SX_TIED_KEY not supported */
--    (sv_retrieve_t)retrieve_other,	/* SX_TIED_IDX not supported */
--    (sv_retrieve_t)retrieve_other,	/* SX_UTF8STR not supported */
--    (sv_retrieve_t)retrieve_other,	/* SX_LUTF8STR not supported */
--    (sv_retrieve_t)retrieve_other,	/* SX_FLAG_HASH not supported */
--    (sv_retrieve_t)retrieve_other,	/* SX_CODE not supported */
--    (sv_retrieve_t)retrieve_other,	/* SX_WEAKREF not supported */
--    (sv_retrieve_t)retrieve_other,	/* SX_WEAKOVERLOAD not supported */
--    (sv_retrieve_t)retrieve_other,	/* SX_VSTRING not supported */
--    (sv_retrieve_t)retrieve_other,	/* SX_LVSTRING not supported */
--    (sv_retrieve_t)retrieve_other,	/* SX_SVUNDEF_ELEM not supported */
--    (sv_retrieve_t)retrieve_other,	/* SX_REGEXP */
--    (sv_retrieve_t)retrieve_other,  	/* SX_LOBJECT not supported */
--    (sv_retrieve_t)retrieve_other,	/* SX_BOOLEAN_TRUE not supported */
--    (sv_retrieve_t)retrieve_other,	/* SX_BOOLEAN_FALSE not supported */
--    (sv_retrieve_t)retrieve_other,  	/* SX_LAST */
-+    (sv_retrieve_t)retrieve_other,      /* SX_SV_UNDEF not supported */
-+    (sv_retrieve_t)retrieve_other,      /* SX_SV_YES not supported */
-+    (sv_retrieve_t)retrieve_other,      /* SX_SV_NO not supported */
-+    (sv_retrieve_t)retrieve_other,      /* SX_BLESS not supported */
-+    (sv_retrieve_t)retrieve_other,      /* SX_IX_BLESS not supported */
-+    (sv_retrieve_t)retrieve_other,      /* SX_HOOK not supported */
-+    (sv_retrieve_t)retrieve_other,      /* SX_OVERLOADED not supported */
-+    (sv_retrieve_t)retrieve_other,      /* SX_TIED_KEY not supported */
-+    (sv_retrieve_t)retrieve_other,      /* SX_TIED_IDX not supported */
-+    (sv_retrieve_t)retrieve_other,      /* SX_UTF8STR not supported */
-+    (sv_retrieve_t)retrieve_other,      /* SX_LUTF8STR not supported */
-+    (sv_retrieve_t)retrieve_other,      /* SX_FLAG_HASH not supported */
-+    (sv_retrieve_t)retrieve_other,      /* SX_CODE not supported */
-+    (sv_retrieve_t)retrieve_other,      /* SX_WEAKREF not supported */
-+    (sv_retrieve_t)retrieve_other,      /* SX_WEAKOVERLOAD not supported */
-+    (sv_retrieve_t)retrieve_other,      /* SX_VSTRING not supported */
-+    (sv_retrieve_t)retrieve_other,      /* SX_LVSTRING not supported */
-+    (sv_retrieve_t)retrieve_other,      /* SX_SVUNDEF_ELEM not supported */
-+    (sv_retrieve_t)retrieve_other,      /* SX_REGEXP */
-+    (sv_retrieve_t)retrieve_other,      /* SX_LOBJECT not supported */
-+    (sv_retrieve_t)retrieve_other,      /* SX_BOOLEAN_TRUE not supported */
-+    (sv_retrieve_t)retrieve_other,      /* SX_BOOLEAN_FALSE not supported */
-+    (sv_retrieve_t)retrieve_other,      /* SX_LAST */
- };
- 
- static SV *retrieve_hook_common(pTHX_ stcxt_t *cxt, const char *cname, int large);
-@@ -1480,43 +1481,43 @@ static SV *retrieve_boolean_true(pTHX_ stcxt_t *cxt, const char *cname);
- static SV *retrieve_boolean_false(pTHX_ stcxt_t *cxt, const char *cname);
- 
- static const sv_retrieve_t sv_retrieve[] = {
--    0,					/* SX_OBJECT -- entry unused dynamically */
--    (sv_retrieve_t)retrieve_lscalar,	/* SX_LSCALAR */
--    (sv_retrieve_t)retrieve_array,	/* SX_ARRAY */
--    (sv_retrieve_t)retrieve_hash,	/* SX_HASH */
--    (sv_retrieve_t)retrieve_ref,	/* SX_REF */
--    (sv_retrieve_t)retrieve_undef,	/* SX_UNDEF */
--    (sv_retrieve_t)retrieve_integer,	/* SX_INTEGER */
--    (sv_retrieve_t)retrieve_double,	/* SX_DOUBLE */
--    (sv_retrieve_t)retrieve_byte,	/* SX_BYTE */
--    (sv_retrieve_t)retrieve_netint,	/* SX_NETINT */
--    (sv_retrieve_t)retrieve_scalar,	/* SX_SCALAR */
--    (sv_retrieve_t)retrieve_tied_array,	/* SX_TIED_ARRAY */
--    (sv_retrieve_t)retrieve_tied_hash,	/* SX_TIED_HASH */
-+    0,                                  /* SX_OBJECT -- entry unused dynamically */
-+    (sv_retrieve_t)retrieve_lscalar,    /* SX_LSCALAR */
-+    (sv_retrieve_t)retrieve_array,      /* SX_ARRAY */
-+    (sv_retrieve_t)retrieve_hash,       /* SX_HASH */
-+    (sv_retrieve_t)retrieve_ref,        /* SX_REF */
-+    (sv_retrieve_t)retrieve_undef,      /* SX_UNDEF */
-+    (sv_retrieve_t)retrieve_integer,    /* SX_INTEGER */
-+    (sv_retrieve_t)retrieve_double,     /* SX_DOUBLE */
-+    (sv_retrieve_t)retrieve_byte,       /* SX_BYTE */
-+    (sv_retrieve_t)retrieve_netint,     /* SX_NETINT */
-+    (sv_retrieve_t)retrieve_scalar,     /* SX_SCALAR */
-+    (sv_retrieve_t)retrieve_tied_array, /* SX_TIED_ARRAY */
-+    (sv_retrieve_t)retrieve_tied_hash,  /* SX_TIED_HASH */
-     (sv_retrieve_t)retrieve_tied_scalar,/* SX_TIED_SCALAR */
--    (sv_retrieve_t)retrieve_sv_undef,	/* SX_SV_UNDEF */
--    (sv_retrieve_t)retrieve_sv_yes,	/* SX_SV_YES */
--    (sv_retrieve_t)retrieve_sv_no,	/* SX_SV_NO */
--    (sv_retrieve_t)retrieve_blessed,	/* SX_BLESS */
-+    (sv_retrieve_t)retrieve_sv_undef,   /* SX_SV_UNDEF */
-+    (sv_retrieve_t)retrieve_sv_yes,     /* SX_SV_YES */
-+    (sv_retrieve_t)retrieve_sv_no,      /* SX_SV_NO */
-+    (sv_retrieve_t)retrieve_blessed,    /* SX_BLESS */
-     (sv_retrieve_t)retrieve_idx_blessed,/* SX_IX_BLESS */
--    (sv_retrieve_t)retrieve_hook,	/* SX_HOOK */
--    (sv_retrieve_t)retrieve_overloaded,	/* SX_OVERLOAD */
--    (sv_retrieve_t)retrieve_tied_key,	/* SX_TIED_KEY */
--    (sv_retrieve_t)retrieve_tied_idx,	/* SX_TIED_IDX */
--    (sv_retrieve_t)retrieve_utf8str,	/* SX_UTF8STR  */
--    (sv_retrieve_t)retrieve_lutf8str,	/* SX_LUTF8STR */
--    (sv_retrieve_t)retrieve_flag_hash,	/* SX_HASH */
--    (sv_retrieve_t)retrieve_code,	/* SX_CODE */
--    (sv_retrieve_t)retrieve_weakref,	/* SX_WEAKREF */
-+    (sv_retrieve_t)retrieve_hook,       /* SX_HOOK */
-+    (sv_retrieve_t)retrieve_overloaded, /* SX_OVERLOAD */
-+    (sv_retrieve_t)retrieve_tied_key,   /* SX_TIED_KEY */
-+    (sv_retrieve_t)retrieve_tied_idx,   /* SX_TIED_IDX */
-+    (sv_retrieve_t)retrieve_utf8str,    /* SX_UTF8STR  */
-+    (sv_retrieve_t)retrieve_lutf8str,   /* SX_LUTF8STR */
-+    (sv_retrieve_t)retrieve_flag_hash,  /* SX_HASH */
-+    (sv_retrieve_t)retrieve_code,       /* SX_CODE */
-+    (sv_retrieve_t)retrieve_weakref,    /* SX_WEAKREF */
-     (sv_retrieve_t)retrieve_weakoverloaded,/* SX_WEAKOVERLOAD */
--    (sv_retrieve_t)retrieve_vstring,	/* SX_VSTRING */
--    (sv_retrieve_t)retrieve_lvstring,	/* SX_LVSTRING */
-+    (sv_retrieve_t)retrieve_vstring,    /* SX_VSTRING */
-+    (sv_retrieve_t)retrieve_lvstring,   /* SX_LVSTRING */
-     (sv_retrieve_t)retrieve_svundef_elem,/* SX_SVUNDEF_ELEM */
--    (sv_retrieve_t)retrieve_regexp,	/* SX_REGEXP */
--    (sv_retrieve_t)retrieve_lobject,	/* SX_LOBJECT */
--    (sv_retrieve_t)retrieve_boolean_true,	/* SX_BOOLEAN_TRUE */
--    (sv_retrieve_t)retrieve_boolean_false,	/* SX_BOOLEAN_FALSE */
--    (sv_retrieve_t)retrieve_other,  	/* SX_LAST */
-+    (sv_retrieve_t)retrieve_regexp,     /* SX_REGEXP */
-+    (sv_retrieve_t)retrieve_lobject,    /* SX_LOBJECT */
-+    (sv_retrieve_t)retrieve_boolean_true,       /* SX_BOOLEAN_TRUE */
-+    (sv_retrieve_t)retrieve_boolean_false,      /* SX_BOOLEAN_FALSE */
-+    (sv_retrieve_t)retrieve_other,      /* SX_LAST */
- };
- 
- #define RETRIEVE(c,x) ((x) >= SX_LAST ? retrieve_other : *(c)->retrieve_vtbl[x])
-@@ -1536,8 +1537,8 @@ static void init_perinterp(pTHX)
- {
-     INIT_STCXT;
-     INIT_TRACEME;
--    cxt->netorder = 0;		/* true if network order used */
--    cxt->forgive_me = -1;	/* whether to be forgiving... */
-+    cxt->netorder = 0;          /* true if network order used */
-+    cxt->forgive_me = -1;       /* whether to be forgiving... */
-     cxt->accept_future_minor = -1; /* would otherwise occur too late */
- }
- 
-@@ -1553,7 +1554,7 @@ static void reset_context(stcxt_t *cxt)
-     cxt->s_dirty = 0;
-     cxt->recur_sv = NULL;
-     cxt->recur_depth = 0;
--    cxt->optype &= ~(ST_STORE|ST_RETRIEVE);	/* Leave ST_CLONE alone */
-+    cxt->optype &= ~(ST_STORE|ST_RETRIEVE);     /* Leave ST_CLONE alone */
- }
- 
- /*
-@@ -1562,7 +1563,7 @@ static void reset_context(stcxt_t *cxt)
-  * Initialize a new store context for real recursion.
-  */
- static void init_store_context(pTHX_
--	stcxt_t *cxt,
-+        stcxt_t *cxt,
-         PerlIO *f,
-         int optype,
-         int network_order)
-@@ -1572,15 +1573,15 @@ static void init_store_context(pTHX_
-     TRACEME(("init_store_context"));
- 
-     cxt->netorder = network_order;
--    cxt->forgive_me = -1;		/* Fetched from perl if needed */
--    cxt->deparse = -1;			/* Idem */
--    cxt->eval = NULL;			/* Idem */
--    cxt->canonical = -1;		/* Idem */
--    cxt->tagnum = -1;			/* Reset tag numbers */
--    cxt->classnum = -1;			/* Reset class numbers */
--    cxt->fio = f;			/* Where I/O are performed */
--    cxt->optype = optype;		/* A store, or a deep clone */
--    cxt->entry = 1;			/* No recursion yet */
-+    cxt->forgive_me = -1;               /* Fetched from perl if needed */
-+    cxt->deparse = -1;                  /* Idem */
-+    cxt->eval = NULL;                   /* Idem */
-+    cxt->canonical = -1;                /* Idem */
-+    cxt->tagnum = -1;                   /* Reset tag numbers */
-+    cxt->classnum = -1;                 /* Reset class numbers */
-+    cxt->fio = f;                       /* Where I/O are performed */
-+    cxt->optype = optype;               /* A store, or a deep clone */
-+    cxt->entry = 1;                     /* No recursion yet */
- 
-     /*
-      * The 'hseen' table is used to keep track of each SV stored and their
-@@ -1598,7 +1599,7 @@ static void init_store_context(pTHX_
-     cxt->pseen = ptr_table_new();
-     cxt->hseen = 0;
- #else
--    cxt->hseen = newHV();	/* Table where seen objects are stored */
-+    cxt->hseen = newHV();       /* Table where seen objects are stored */
-     HvSHAREKEYS_off(cxt->hseen);
- #endif
-     /*
-@@ -1617,9 +1618,9 @@ static void init_store_context(pTHX_
-      *
-      * It is reported fixed in 5.005, hence the #if.
-      */
--#define HBUCKETS	4096		/* Buckets for %hseen */
-+#define HBUCKETS        4096            /* Buckets for %hseen */
- #ifndef USE_PTR_TABLE
--    HvMAX(cxt->hseen) = HBUCKETS - 1;	/* keys %hseen = $HBUCKETS; */
-+    HvMAX(cxt->hseen) = HBUCKETS - 1;   /* keys %hseen = $HBUCKETS; */
- #endif
- 
-     /*
-@@ -1630,9 +1631,9 @@ static void init_store_context(pTHX_
-      * We turn the shared key optimization on.
-      */
- 
--    cxt->hclass = newHV();		/* Where seen classnames are stored */
-+    cxt->hclass = newHV();              /* Where seen classnames are stored */
- 
--    HvMAX(cxt->hclass) = HBUCKETS - 1;	/* keys %hclass = $HBUCKETS; */
-+    HvMAX(cxt->hclass) = HBUCKETS - 1;  /* keys %hclass = $HBUCKETS; */
- 
-     /*
-      * The 'hook' hash table is used to keep track of the references on
-@@ -1643,7 +1644,7 @@ static void init_store_context(pTHX_
-      * hooks.
-      */
- 
--    cxt->hook = newHV();		/* Table where hooks are cached */
-+    cxt->hook = newHV();                /* Table where hooks are cached */
- 
-     /*
-      * The 'hook_seen' array keeps track of all the SVs returned by
-@@ -1678,7 +1679,7 @@ static void clean_store_context(pTHX_ stcxt_t *cxt)
- #ifndef USE_PTR_TABLE
-     if (cxt->hseen) {
-         hv_iterinit(cxt->hseen);
--        while ((he = hv_iternext(cxt->hseen)))	/* Extra () for -Wall */
-+        while ((he = hv_iternext(cxt->hseen)))  /* Extra () for -Wall */
-             HeVAL(he) = &PL_sv_undef;
-     }
- #endif
-@@ -1696,7 +1697,7 @@ static void clean_store_context(pTHX_ stcxt_t *cxt)
-      * some cases where this routine is called more than once, during
-      * exceptional events.  This was reported by Marc Lehmann when Storable
-      * is executed from mod_perl, and the fix was suggested by him.
--     * 		-- RAM, 20/12/2000
-+     *          -- RAM, 20/12/2000
-      */
- 
- #ifdef USE_PTR_TABLE
-@@ -1736,13 +1737,13 @@ static void clean_store_context(pTHX_ stcxt_t *cxt)
-         sv_free((SV *) hook_seen);
-     }
- 
--    cxt->forgive_me = -1;	/* Fetched from perl if needed */
--    cxt->deparse = -1;		/* Idem */
-+    cxt->forgive_me = -1;       /* Fetched from perl if needed */
-+    cxt->deparse = -1;          /* Idem */
-     if (cxt->eval) {
-         SvREFCNT_dec(cxt->eval);
-     }
--    cxt->eval = NULL;		/* Idem */
--    cxt->canonical = -1;	/* Idem */
-+    cxt->eval = NULL;           /* Idem */
-+    cxt->canonical = -1;        /* Idem */
- 
-     reset_context(cxt);
- }
-@@ -1753,7 +1754,7 @@ static void clean_store_context(pTHX_ stcxt_t *cxt)
-  * Initialize a new retrieve context for real recursion.
-  */
- static void init_retrieve_context(pTHX_
--	stcxt_t *cxt, int optype, int is_tainted)
-+        stcxt_t *cxt, int optype, int is_tainted)
- {
-     INIT_TRACEME;
- 
-@@ -1768,7 +1769,7 @@ static void init_retrieve_context(pTHX_
-      * hooks.
-      */
- 
--    cxt->hook  = newHV();			/* Caches STORABLE_thaw */
-+    cxt->hook  = newHV();                       /* Caches STORABLE_thaw */
- 
- #ifdef USE_PTR_TABLE
-     cxt->pseen = 0;
-@@ -1784,19 +1785,19 @@ static void init_retrieve_context(pTHX_
-     cxt->hseen = (((void*)cxt->retrieve_vtbl == (void*)sv_old_retrieve)
-                   ? newHV() : 0);
- 
--    cxt->aseen = newAV();	/* Where retrieved objects are kept */
--    cxt->where_is_undef = UNSET_NTAG_T;	/* Special case for PL_sv_undef */
--    cxt->aclass = newAV();	/* Where seen classnames are kept */
--    cxt->tagnum = 0;		/* Have to count objects... */
--    cxt->classnum = 0;		/* ...and class names as well */
-+    cxt->aseen = newAV();       /* Where retrieved objects are kept */
-+    cxt->where_is_undef = UNSET_NTAG_T; /* Special case for PL_sv_undef */
-+    cxt->aclass = newAV();      /* Where seen classnames are kept */
-+    cxt->tagnum = 0;            /* Have to count objects... */
-+    cxt->classnum = 0;          /* ...and class names as well */
-     cxt->optype = optype;
-     cxt->s_tainted = is_tainted;
--    cxt->entry = 1;		/* No recursion yet */
-+    cxt->entry = 1;             /* No recursion yet */
- #ifndef HAS_RESTRICTED_HASHES
--    cxt->derestrict = -1;	/* Fetched from perl if needed */
-+    cxt->derestrict = -1;       /* Fetched from perl if needed */
- #endif
- #ifndef HAS_UTF8_ALL
--    cxt->use_bytes = -1;	/* Fetched from perl if needed */
-+    cxt->use_bytes = -1;        /* Fetched from perl if needed */
- #endif
-     cxt->accept_future_minor = -1;/* Fetched from perl if needed */
-     cxt->in_retrieve_overloaded = 0;
-@@ -1842,16 +1843,16 @@ static void clean_retrieve_context(pTHX_ stcxt_t *cxt)
-         HV *hseen = cxt->hseen;
-         cxt->hseen = 0;
-         hv_undef(hseen);
--        sv_free((SV *) hseen);	/* optional HV, for backward compat. */
-+        sv_free((SV *) hseen);  /* optional HV, for backward compat. */
-     }
- 
- #ifndef HAS_RESTRICTED_HASHES
--    cxt->derestrict = -1;		/* Fetched from perl if needed */
-+    cxt->derestrict = -1;               /* Fetched from perl if needed */
- #endif
- #ifndef HAS_UTF8_ALL
--    cxt->use_bytes = -1;		/* Fetched from perl if needed */
-+    cxt->use_bytes = -1;                /* Fetched from perl if needed */
- #endif
--    cxt->accept_future_minor = -1;	/* Fetched from perl if needed */
-+    cxt->accept_future_minor = -1;      /* Fetched from perl if needed */
- 
-     cxt->in_retrieve_overloaded = 0;
-     reset_context(cxt);
-@@ -1989,9 +1990,9 @@ static int last_op_in_netorder(pTHX)
-  * nor its ancestors know about the method.
-  */
- static SV *pkg_fetchmeth(pTHX_
--	HV *cache,
--	HV *pkg,
--	const char *method)
-+        HV *cache,
-+        HV *pkg,
-+        const char *method)
- {
-     GV *gv;
-     SV *sv;
-@@ -2030,9 +2031,9 @@ static SV *pkg_fetchmeth(pTHX_
-  * Force cached value to be undef: hook ignored even if present.
-  */
- static void pkg_hide(pTHX_
--	HV *cache,
--	HV *pkg,
--	const char *method)
-+        HV *cache,
-+        HV *pkg,
-+        const char *method)
- {
-     const char *hvname = HvNAME_get(pkg);
-     PERL_UNUSED_ARG(method);
-@@ -2046,9 +2047,9 @@ static void pkg_hide(pTHX_
-  * Discard cached value: a whole fetch loop will be retried at next lookup.
-  */
- static void pkg_uncache(pTHX_
--	HV *cache,
--	HV *pkg,
--	const char *method)
-+        HV *cache,
-+        HV *pkg,
-+        const char *method)
- {
-     const char *hvname = HvNAME_get(pkg);
-     PERL_UNUSED_ARG(method);
-@@ -2064,9 +2065,9 @@ static void pkg_uncache(pTHX_
-  * know about the method.
-  */
- static SV *pkg_can(pTHX_
--	HV *cache,
--	HV *pkg,
--	const char *method)
-+        HV *cache,
-+        HV *pkg,
-+        const char *method)
- {
-     SV **svh;
-     SV *sv;
-@@ -2099,7 +2100,7 @@ static SV *pkg_can(pTHX_
-     }
- 
-     TRACEME(("not cached yet"));
--    return pkg_fetchmeth(aTHX_ cache, pkg, method);	/* Fetch and cache */
-+    return pkg_fetchmeth(aTHX_ cache, pkg, method);     /* Fetch and cache */
- }
- 
- /*
-@@ -2109,11 +2110,11 @@ static SV *pkg_can(pTHX_
-  * Propagates the single returned value if not called in void context.
-  */
- static SV *scalar_call(pTHX_
--	SV *obj,
--	SV *hook,
--	int cloning,
--	AV *av,
--	I32 flags)
-+        SV *obj,
-+        SV *hook,
-+        int cloning,
-+        AV *av,
-+        I32 flags)
- {
-     dSP;
-     int count;
-@@ -2129,12 +2130,12 @@ static SV *scalar_call(pTHX_
- 
-     PUSHMARK(sp);
-     XPUSHs(obj);
--    XPUSHs(sv_2mortal(newSViv(cloning)));		/* Cloning flag */
-+    XPUSHs(sv_2mortal(newSViv(cloning)));               /* Cloning flag */
-     if (av) {
-         SV **ary = AvARRAY(av);
-         SSize_t cnt = AvFILLp(av) + 1;
-         SSize_t i;
--        XPUSHs(ary[0]);					/* Frozen string */
-+        XPUSHs(ary[0]);                                 /* Frozen string */
-         for (i = 1; i < cnt; i++) {
-             TRACEME(("pushing arg #%d (0x%" UVxf ")...",
-                      (int)i, PTR2UV(ary[i])));
-@@ -2144,7 +2145,7 @@ static SV *scalar_call(pTHX_
-     PUTBACK;
- 
-     TRACEME(("calling..."));
--    count = call_sv(hook, flags);	/* Go back to Perl code */
-+    count = call_sv(hook, flags);       /* Go back to Perl code */
-     TRACEME(("count = %d", count));
- 
-     SPAGAIN;
-@@ -2168,9 +2169,9 @@ static SV *scalar_call(pTHX_
-  * Returns the list of returned values in an array.
-  */
- static AV *array_call(pTHX_
--	SV *obj,
--	SV *hook,
--	int cloning)
-+        SV *obj,
-+        SV *hook,
-+        int cloning)
- {
-     dSP;
-     int count;
-@@ -2186,11 +2187,11 @@ static AV *array_call(pTHX_
-     SAVETMPS;
- 
-     PUSHMARK(sp);
--    XPUSHs(obj);				/* Target object */
--    XPUSHs(sv_2mortal(newSViv(cloning)));	/* Cloning flag */
-+    XPUSHs(obj);                                /* Target object */
-+    XPUSHs(sv_2mortal(newSViv(cloning)));       /* Cloning flag */
-     PUTBACK;
- 
--    count = call_sv(hook, G_LIST);	/* Go back to Perl code */
-+    count = call_sv(hook, G_LIST);      /* Go back to Perl code */
- 
-     SPAGAIN;
- 
-@@ -2281,10 +2282,10 @@ cleanup_recursive_data(pTHX_ SV* sv) {
-  * Return true if the class was known, false if the ID was just generated.
-  */
- static int known_class(pTHX_
--	stcxt_t *cxt,
--	char *name,		/* Class name */
--	int len,		/* Name length */
--	I32 *classnum)
-+        stcxt_t *cxt,
-+        char *name,             /* Class name */
-+        int len,                /* Name length */
-+        I32 *classnum)
- {
-     SV **svh;
-     HV *hclass = cxt->hclass;
-@@ -2394,7 +2395,7 @@ static int store_scalar(pTHX_ stcxt_t *cxt, SV *sv)
-     IV iv;
-     char *pv;
-     STRLEN len;
--    U32 flags = SvFLAGS(sv);	/* "cc -O" may put it in register */
-+    U32 flags = SvFLAGS(sv);    /* "cc -O" may put it in register */
- 
-     TRACEME(("store_scalar (0x%" UVxf ")", PTR2UV(sv)));
- 
-@@ -2404,7 +2405,7 @@ static int store_scalar(pTHX_ stcxt_t *cxt, SV *sv)
-      * sv->sv_flags each time we wish to check the flags.
-      */
- 
--    if (!(flags & SVf_OK)) {			/* !SvOK(sv) */
-+    if (!(flags & SVf_OK)) {                    /* !SvOK(sv) */
-         if (sv == &PL_sv_undef) {
-             TRACEME(("immortal undef"));
-             PUTMARK(SX_SV_UNDEF);
-@@ -2454,8 +2455,8 @@ static int store_scalar(pTHX_ stcxt_t *cxt, SV *sv)
-             TRACEME(("immortal no"));
-             PUTMARK(SX_SV_NO);
-         } else {
--            pv = SvPV(sv, len);		/* We know it's SvPOK */
--            goto string;			/* Share code below */
-+            pv = SvPV(sv, len);         /* We know it's SvPOK */
-+            goto string;                        /* Share code below */
-         }
- #ifdef SvIsBOOL
-     } else if (SvIsBOOL(sv)) {
-@@ -2491,7 +2492,7 @@ static int store_scalar(pTHX_ stcxt_t *cxt, SV *sv)
- #ifdef SVf_IVisUV
-         /* Need to do this out here, else 0xFFFFFFFF becomes iv of -1
-          * (for example) and that ends up in the optimised small integer
--         * case. 
-+         * case.
-          */
-         if ((flags & SVf_IVisUV) && SvUV(sv) > IV_MAX) {
-             TRACEME(("large unsigned integer as string, value = %" UVuf,
-@@ -2556,21 +2557,21 @@ static int store_scalar(pTHX_ stcxt_t *cxt, SV *sv)
-          */
-         if (nv.nv == (NV) (iv = I_V(nv.nv))) {
-             TRACEME(("double %" NVff " is actually integer %" IVdf, nv, iv));
--            goto integer;		/* Share code above */
-+            goto integer;               /* Share code above */
-         }
- #else
- 
-         SvIV_please(sv);
-         if (SvIOK_notUV(sv)) {
-             iv = SvIV(sv);
--            goto integer;		/* Share code above */
-+            goto integer;               /* Share code above */
-         }
-         nv.nv = SvNV(sv);
- #endif
- 
-         if (cxt->netorder) {
-             TRACEME(("double %" NVff " stored as string", nv.nv));
--            goto string_readlen;		/* Share code below */
-+            goto string_readlen;                /* Share code below */
-         }
- #if NV_PADDING
-         Zero(nv.bytes + NVSIZE - NV_PADDING, NV_PADDING, char);
-@@ -2583,7 +2584,8 @@ static int store_scalar(pTHX_ stcxt_t *cxt, SV *sv)
- 
-     } else if (flags & (SVp_POK | SVp_NOK | SVp_IOK)) {
- #ifdef SvVOK
--        MAGIC *mg;
-+        const char *vstr_pv;
-+        STRLEN vstr_len;
- #endif
-         UV wlen; /* For 64-bit machines */
- 
-@@ -2597,18 +2599,14 @@ static int store_scalar(pTHX_ stcxt_t *cxt, SV *sv)
-     string:
- 
- #ifdef SvVOK
--        if (SvMAGICAL(sv) && (mg = mg_find(sv, 'V'))) {
--            /* The macro passes this by address, not value, and a lot of
--               called code assumes that it's 32 bits without checking.  */
--            const SSize_t len = mg->mg_len;
-+        if ((vstr_pv = SvVSTRING(sv, vstr_len))) {
-             /* we no longer accept vstrings over I32_SIZE-1, so don't emit
-                them, also, older Storables handle them badly.
-             */
--            if (len >= I32_MAX) {
-+            if (vstr_len >= I32_MAX) {
-                 CROAK(("vstring too large to freeze"));
-             }
--            STORE_PV_LEN((const char *)mg->mg_ptr,
--                         len, SX_VSTRING, SX_LVSTRING);
-+            STORE_PV_LEN(vstr_pv, vstr_len, SX_VSTRING, SX_LVSTRING);
-         }
- #endif
- 
-@@ -2625,7 +2623,7 @@ static int store_scalar(pTHX_ stcxt_t *cxt, SV *sv)
-                sv_reftype(sv, FALSE),
-                PTR2UV(sv)));
-     }
--    return 0;		/* Ok, no recursion on scalars */
-+    return 0;           /* Ok, no recursion on scalars */
- }
- 
- /*
-@@ -2704,7 +2702,7 @@ static int store_array(pTHX_ stcxt_t *cxt, AV *av)
-         }
- #endif
-         TRACEME(("(#%d) item", (int)i));
--        if ((ret = store(aTHX_ cxt, *sav)))	/* Extra () for -Wall */
-+        if ((ret = store(aTHX_ cxt, *sav)))     /* Extra () for -Wall */
-             return ret;
-     }
- 
-@@ -2778,7 +2776,7 @@ static int store_hash(pTHX_ stcxt_t *cxt, HV *hv)
-     unsigned char hash_flags = (SvREADONLY(hv) ? SHV_RESTRICTED : 0);
-     SV * const recur_sv = cxt->recur_sv;
- 
--    /* 
-+    /*
-      * Signal hash by emitting SX_HASH, followed by the table length.
-      * Max number of keys per perl version:
-      *    IV            - 5.12
-@@ -2788,7 +2786,7 @@ static int store_hash(pTHX_ stcxt_t *cxt, HV *hv)
-      */
- 
-     if (len > 0x7fffffffu) { /* keys > I32_MAX */
--        /* 
-+        /*
-          * Large hash: SX_LOBJECT type hashflags? U64 data
-          *
-          * Stupid limitation:
-@@ -2870,7 +2868,7 @@ static int store_hash(pTHX_ stcxt_t *cxt, HV *hv)
-                 && (cxt->canonical =
-                     (SvTRUE(get_sv("Storable::canonical", GV_ADD))
-                      ? 1 : 0))))
--	) {
-+        ) {
-         /*
-          * Storing in order, sorted by key.
-          * Run through the hash, building up an array of keys in a
-@@ -2939,7 +2937,7 @@ static int store_hash(pTHX_ stcxt_t *cxt, HV *hv)
- 
-             TRACEME(("(#%d) value 0x%" UVxf, (int)i, PTR2UV(val)));
- 
--            if ((ret = store(aTHX_ cxt, val)))	/* Extra () for -Wall, grr... */
-+            if ((ret = store(aTHX_ cxt, val)))  /* Extra () for -Wall, grr... */
-                 goto out;
- 
-             /*
-@@ -3004,7 +3002,7 @@ static int store_hash(pTHX_ stcxt_t *cxt, HV *hv)
-                 Safefree (keyval);
-         }
- 
--        /* 
-+        /*
-          * Free up the temporary array
-          */
- 
-@@ -3027,7 +3025,7 @@ static int store_hash(pTHX_ stcxt_t *cxt, HV *hv)
-             SV *val = (he ? hv_iterval(hv, he) : 0);
- 
-             if (val == 0)
--                return 1;		/* Internal error, not I/O error */
-+                return 1;               /* Internal error, not I/O error */
- 
-             if ((ret = store_hentry(aTHX_ cxt, hv, i, HeKEY_hek(he), val, hash_flags)))
-                 goto out;
-@@ -3042,14 +3040,14 @@ static int store_hash(pTHX_ stcxt_t *cxt, HV *hv)
-     if (cxt->max_recur_depth_hash != -1 && recur_sv != (SV*)hv && cxt->recur_depth > 0) {
-         --cxt->recur_depth;
-     }
--    HvRITER_set(hv, riter);		/* Restore hash iterator state */
-+    HvRITER_set(hv, riter);             /* Restore hash iterator state */
-     HvEITER_set(hv, eiter);
- 
-     return ret;
- }
- 
- static int store_hentry(pTHX_
--	stcxt_t *cxt, HV* hv, UV i, HEK *hek, SV *val, unsigned char hash_flags)
-+        stcxt_t *cxt, HV* hv, UV i, HEK *hek, SV *val, unsigned char hash_flags)
- {
-     int ret = 0;
-     int flagged_hash = ((SvREADONLY(hv)
-@@ -3221,7 +3219,7 @@ static int store_code(pTHX_ stcxt_t *cxt, CV *cv)
-         (cxt->deparse < 0 &&
-          !(cxt->deparse =
-            SvTRUE(get_sv("Storable::Deparse", GV_ADD)) ? 1 : 0))
--	) {
-+        ) {
-         return store_other(aTHX_ cxt, (SV*)cv);
-     }
- 
-@@ -3276,7 +3274,7 @@ static int store_code(pTHX_ stcxt_t *cxt, CV *cv)
-         CROAK(("The result of B::Deparse::coderef2text was empty - maybe you're trying to serialize an XS function?\n"));
-     }
- 
--    /* 
-+    /*
-      * Signal code by emitting SX_CODE.
-      */
- 
-@@ -3366,7 +3364,7 @@ static int store_regexp(pTHX_ stcxt_t *cxt, SV *sv) {
-     if (re_len > 0xFF) {
-       op_flags |= SHR_U32_RE_LEN;
-     }
--    
-+
-     PUTMARK(SX_REGEXP);
-     PUTMARK(op_flags);
-     if (op_flags & SHR_U32_RE_LEN) {
-@@ -3412,13 +3410,13 @@ static int store_tied(pTHX_ stcxt_t *cxt, SV *sv)
- 
-     if (svt == SVt_PVHV) {
-         TRACEME(("tied hash"));
--        PUTMARK(SX_TIED_HASH);		/* Introduces tied hash */
-+        PUTMARK(SX_TIED_HASH);          /* Introduces tied hash */
-     } else if (svt == SVt_PVAV) {
-         TRACEME(("tied array"));
--        PUTMARK(SX_TIED_ARRAY);		/* Introduces tied array */
-+        PUTMARK(SX_TIED_ARRAY);         /* Introduces tied array */
-     } else {
-         TRACEME(("tied scalar"));
--        PUTMARK(SX_TIED_SCALAR);	/* Introduces tied scalar */
-+        PUTMARK(SX_TIED_SCALAR);        /* Introduces tied scalar */
-         mtype = 'q';
-     }
- 
-@@ -3480,7 +3478,7 @@ static int store_tied_item(pTHX_ stcxt_t *cxt, SV *sv)
-         PUTMARK(SX_TIED_KEY);
-         TRACEME(("store_tied_item: storing OBJ 0x%" UVxf, PTR2UV(mg->mg_obj)));
- 
--        if ((ret = store(aTHX_ cxt, mg->mg_obj)))	/* Extra () for -Wall, grr... */
-+        if ((ret = store(aTHX_ cxt, mg->mg_obj)))       /* Extra () for -Wall, grr... */
-             return ret;
- 
-         TRACEME(("store_tied_item: storing PTR 0x%" UVxf, PTR2UV(mg->mg_ptr)));
-@@ -3494,7 +3492,7 @@ static int store_tied_item(pTHX_ stcxt_t *cxt, SV *sv)
-         PUTMARK(SX_TIED_IDX);
-         TRACEME(("store_tied_item: storing OBJ 0x%" UVxf, PTR2UV(mg->mg_obj)));
- 
--        if ((ret = store(aTHX_ cxt, mg->mg_obj)))	/* Idem, for -Wall */
-+        if ((ret = store(aTHX_ cxt, mg->mg_obj)))       /* Idem, for -Wall */
-             return ret;
- 
-         TRACEME(("store_tied_item: storing IDX %d", (int)idx));
-@@ -3508,7 +3506,7 @@ static int store_tied_item(pTHX_ stcxt_t *cxt, SV *sv)
- }
- 
- /*
-- * store_hook		-- dispatched manually, not via sv_store[]
-+ * store_hook           -- dispatched manually, not via sv_store[]
-  *
-  * The blessed SV is serialized by a hook.
-  *
-@@ -3525,7 +3523,7 @@ static int store_tied_item(pTHX_ stcxt_t *cxt, SV *sv)
-  *
-  * and when the <index> form is used (classname already seen), the "large
-  * classname" bit in <flags> indicates how large the <index> is.
-- * 
-+ *
-  * The serialized string returned by the hook is of length <len2> and comes
-  * next.  It is an opaque string for us.
-  *
-@@ -3566,16 +3564,16 @@ static int store_hook(
-     SV *ref;
-     AV *av;
-     SV **ary;
--    IV count;			/* really len3 + 1 */
-+    IV count;                   /* really len3 + 1 */
-     unsigned char flags;
-     char *pv;
-     int i;
--    int recursed = 0;		/* counts recursion */
--    int obj_type;		/* object type, on 2 bits */
-+    int recursed = 0;           /* counts recursion */
-+    int obj_type;               /* object type, on 2 bits */
-     I32 classnum;
-     int ret;
-     int clone = cxt->optype & ST_CLONE;
--    char mtype = '\0';		/* for blessed ref to tied structures */
-+    char mtype = '\0';          /* for blessed ref to tied structures */
-     unsigned char eflags = '\0'; /* used when object type is SHT_EXTRA */
- #ifdef HAS_U64
-     int need_large_oids = 0;
-@@ -3607,9 +3605,9 @@ static int store_hook(
-          * Produced by a blessed ref to a tied data structure, $o in the
-          * following Perl code.
-          *
--         * 	my %h;
-+         *      my %h;
-          *  tie %h, 'FOO';
--         *	my $o = bless \%h, 'BAR';
-+         *      my $o = bless \%h, 'BAR';
-          *
-          * Signal the tie-ing magic by setting the object type as SHT_EXTRA
-          * (since we have only 2 bits in <flags> to store the type), and an
-@@ -3662,9 +3660,9 @@ static int store_hook(
- 
-     TRACEME(("about to call STORABLE_freeze on class %s", classname));
- 
--    ref = newRV_inc(sv);		/* Temporary reference */
-+    ref = newRV_inc(sv);                /* Temporary reference */
-     av = array_call(aTHX_ ref, hook, clone); /* @a = $object->STORABLE_freeze($c) */
--    SvREFCNT_dec(ref);			/* Reclaim temporary reference */
-+    SvREFCNT_dec(ref);                  /* Reclaim temporary reference */
- 
-     count = AvFILLp(av) + 1;
-     TRACEME(("store_hook, array holds %" IVdf " items", count));
-@@ -3709,7 +3707,7 @@ static int store_hook(
-     pv = SvPV(ary[0], len2);
-     /* We can't use pkg_can here because it only caches one method per
-      * package */
--    { 
-+    {
-         GV* gv = gv_fetchmethod_autoload(pkg, "STORABLE_attach", FALSE);
-         if (gv && isGV(gv)) {
-             if (count > 1)
-@@ -3720,7 +3718,7 @@ static int store_hook(
- 
- #ifdef HAS_U64
-     if (count > I32_MAX) {
--	CROAK(("Too many references returned by STORABLE_freeze()"));
-+        CROAK(("Too many references returned by STORABLE_freeze()"));
-     }
- #endif
- 
-@@ -3751,7 +3749,7 @@ static int store_hook(
-         if (!SvROK(rsv))
-             CROAK(("Item #%d returned by STORABLE_freeze "
-                    "for %s is not a reference", (int)i, classname));
--        xsv = SvRV(rsv);	/* Follow ref to know what to look for */
-+        xsv = SvRV(rsv);        /* Follow ref to know what to look for */
- 
-         /*
-          * Look in hseen and see if we have a tag already.
-@@ -3764,10 +3762,10 @@ static int store_hook(
-            safely store a tag zero. So for ptr_tables we store tag+1
-         */
-         if ((fake_tag = (char *)ptr_table_fetch(cxt->pseen, xsv)))
--            goto sv_seen;	/* Avoid moving code too far to the right */
-+            goto sv_seen;       /* Avoid moving code too far to the right */
- #else
-         if ((svh = hv_fetch(cxt->hseen, (char *) &xsv, sizeof(xsv), FALSE)))
--            goto sv_seen;	/* Avoid moving code too far to the right */
-+            goto sv_seen;       /* Avoid moving code too far to the right */
- #endif
- 
-         TRACEME(("listed object %d at 0x%" UVxf " is unknown", i-1,
-@@ -3790,14 +3788,14 @@ static int store_hook(
-             if (len2 > INT32_MAX)
-                 PUTMARK(SX_LOBJECT);
- #endif
--	    PUTMARK(SX_HOOK);
-+            PUTMARK(SX_HOOK);
-             PUTMARK(flags);
-             if (obj_type == SHT_EXTRA)
-                 PUTMARK(eflags);
-         } else
-             PUTMARK(flags);
- 
--        if ((ret = store(aTHX_ cxt, xsv)))	/* Given by hook for us to store */
-+        if ((ret = store(aTHX_ cxt, xsv)))      /* Given by hook for us to store */
-             return ret;
- 
- #ifdef USE_PTR_TABLE
-@@ -3834,7 +3832,7 @@ static int store_hook(
-          */
- 
-         ASSERT(SvREFCNT(xsv) > 1, ("SV will survive disposal of its REF"));
--        SvREFCNT_dec(rsv);		/* Dispose of reference */
-+        SvREFCNT_dec(rsv);              /* Dispose of reference */
- 
-         /*
-          * Replace entry with its tag (not a real SV, so no refcnt increment)
-@@ -3866,7 +3864,7 @@ static int store_hook(
-  check_done:
-     if (!known_class(aTHX_ cxt, classname, len, &classnum)) {
-         TRACEME(("first time we see class %s, ID = %d", classname, (int)classnum));
--        classnum = -1;			/* Mark: we must store classname */
-+        classnum = -1;                  /* Mark: we must store classname */
-     } else {
-         TRACEME(("already seen class %s, ID = %d", classname, (int)classnum));
-     }
-@@ -3908,9 +3906,9 @@ static int store_hook(
-     if (!recursed) {
- #ifdef HAS_U64
-         if (len2 > INT32_MAX)
--	    PUTMARK(SX_LOBJECT);
-+            PUTMARK(SX_LOBJECT);
- #endif
--	PUTMARK(SX_HOOK);
-+        PUTMARK(SX_HOOK);
-         PUTMARK(flags);
-         if (obj_type == SHT_EXTRA)
-             PUTMARK(eflags);
-@@ -3932,7 +3930,7 @@ static int store_hook(
-             unsigned char clen = (unsigned char) len;
-             PUTMARK(clen);
-         }
--        WRITE(classname, len);		/* Final \0 is omitted */
-+        WRITE(classname, len);          /* Final \0 is omitted */
-     }
- 
-     /* <len2> <frozen-str> */
-@@ -3943,26 +3941,26 @@ static int store_hook(
-     else
- #endif
-     if (flags & SHF_LARGE_STRLEN) {
--        U32 wlen2 = len2;		/* STRLEN might be 8 bytes */
--        WLEN(wlen2);			/* Must write an I32 for 64-bit machines */
-+        U32 wlen2 = len2;               /* STRLEN might be 8 bytes */
-+        WLEN(wlen2);                    /* Must write an I32 for 64-bit machines */
-     } else {
-         unsigned char clen = (unsigned char) len2;
-         PUTMARK(clen);
-     }
-     if (len2)
--        WRITE(pv, (SSize_t)len2);	/* Final \0 is omitted */
-+        WRITE(pv, (SSize_t)len2);       /* Final \0 is omitted */
- 
-     /* [<len3> <object-IDs>] */
-     if (flags & SHF_HAS_LIST) {
-         int len3 = count - 1;
-         if (flags & SHF_LARGE_LISTLEN) {
- #ifdef HAS_U64
--  	    int tlen3 = need_large_oids ? -len3 : len3;
--	    WLEN(tlen3);
-+            int tlen3 = need_large_oids ? -len3 : len3;
-+            WLEN(tlen3);
- #else
-             WLEN(len3);
- #endif
--	}
-+        }
-         else {
-             unsigned char clen = (unsigned char) len3;
-             PUTMARK(clen);
-@@ -3998,7 +3996,7 @@ static int store_hook(
-      */
- 
-     if (count > 1)
--        AvFILLp(av) = 0;	/* Cheat, nothing after 0 interests us */
-+        AvFILLp(av) = 0;        /* Cheat, nothing after 0 interests us */
-     av_undef(av);
-     sv_free((SV *) av);
- 
-@@ -4030,7 +4028,7 @@ static int store_hook(
- }
- 
- /*
-- * store_blessed	-- dispatched manually, not via sv_store[]
-+ * store_blessed        -- dispatched manually, not via sv_store[]
-  *
-  * Check whether there is a STORABLE_xxx hook defined in the class or in one
-  * of its ancestors.  If there is, then redispatch to store_hook();
-@@ -4114,9 +4112,9 @@ static int store_blessed(
-         } else {
-             unsigned char flag = (unsigned char) 0x80;
-             PUTMARK(flag);
--            WLEN(len);	/* Don't BER-encode, this should be rare */
-+            WLEN(len);  /* Don't BER-encode, this should be rare */
-         }
--        WRITE(classname, len);	/* Final \0 is omitted */
-+        WRITE(classname, len);  /* Final \0 is omitted */
-     }
- 
-     /*
-@@ -4152,7 +4150,7 @@ static int store_other(pTHX_ stcxt_t *cxt, SV *sv)
-         (cxt->forgive_me < 0 &&
-          !(cxt->forgive_me = SvTRUE
-            (get_sv("Storable::forgive_me", GV_ADD)) ? 1 : 0))
--	)
-+        )
-         CROAK(("Can't store %s items", sv_reftype(sv, FALSE)));
- 
-     warn("Can't store item %s(0x%" UVxf ")",
-@@ -4219,12 +4217,12 @@ static int sv_type(pTHX_ SV *sv)
-     case SVt_PVMG:
- #if PERL_VERSION_LT(5,11,0)
-         if ((SvFLAGS(sv) & (SVs_OBJECT|SVf_OK|SVs_GMG|SVs_SMG|SVs_RMG))
--	          == (SVs_OBJECT|BFD_Svs_SMG_OR_RMG)
--	    && mg_find(sv, PERL_MAGIC_qr)) {
--	      return svis_REGEXP;
--	}
-+                  == (SVs_OBJECT|BFD_Svs_SMG_OR_RMG)
-+            && mg_find(sv, PERL_MAGIC_qr)) {
-+              return svis_REGEXP;
-+        }
- #endif
--    case SVt_PVLV:		/* Workaround for perl5.004_04 "LVALUE" bug */
-+    case SVt_PVLV:              /* Workaround for perl5.004_04 "LVALUE" bug */
-         if ((SvFLAGS(sv) & (SVs_GMG|SVs_SMG|SVs_RMG)) ==
-             (SVs_GMG|SVs_SMG|SVs_RMG) &&
-             (mg_find(sv, 'p')))
-@@ -4249,7 +4247,7 @@ static int sv_type(pTHX_ SV *sv)
-     case SVt_PVCV:
-         return svis_CODE;
- #if PERL_VERSION_GE(5,9,0)
--	/* case SVt_INVLIST: */
-+        /* case SVt_INVLIST: */
- #endif
- #if PERL_VERSION_GE(5,11,0)
-     case SVt_REGEXP:
-@@ -4293,7 +4291,7 @@ static int store(pTHX_ stcxt_t *cxt, SV *sv)
-      * real pointer, rather a tag number (watch the insertion code below).
-      * That means it probably safe to assume it is well under the 32-bit
-      * limit, and makes the truncation safe.
--     *		-- RAM, 14/09/1999
-+     *          -- RAM, 14/09/1999
-      */
- 
- #ifdef USE_PTR_TABLE
-@@ -4302,8 +4300,8 @@ static int store(pTHX_ stcxt_t *cxt, SV *sv)
-     svh = hv_fetch(hseen, (char *) &sv, sizeof(sv), FALSE);
- #endif
-     if (svh) {
--	ntag_t tagval;
--	if (sv == &PL_sv_undef) {
-+        ntag_t tagval;
-+        if (sv == &PL_sv_undef) {
-             /* We have seen PL_sv_undef before, but fake it as
-                if we have not.
- 
-@@ -4334,9 +4332,9 @@ static int store(pTHX_ stcxt_t *cxt, SV *sv)
-         }
- 
- #ifdef USE_PTR_TABLE
--	tagval = PTR2TAG(((char *)svh)-1);
-+        tagval = PTR2TAG(((char *)svh)-1);
- #else
--	tagval = PTR2TAG(*svh);
-+        tagval = PTR2TAG(*svh);
- #endif
- #ifdef HAS_U64
- 
-@@ -4345,30 +4343,30 @@ static int store(pTHX_ stcxt_t *cxt, SV *sv)
-           Ensure only a newer Storable will be able to parse this tag id
-           if it's over the 2G mark.
-         */
--	if (tagval > I32_MAX) {
-+        if (tagval > I32_MAX) {
- 
--	    TRACEME(("object 0x%" UVxf " seen as #%" UVuf, PTR2UV(sv),
--		     (UV)tagval));
-+            TRACEME(("object 0x%" UVxf " seen as #%" UVuf, PTR2UV(sv),
-+                     (UV)tagval));
- 
--	    PUTMARK(SX_LOBJECT);
--	    PUTMARK(SX_OBJECT);
--	    W64LEN(tagval);
--	    return 0;
--	}
--	else
-+            PUTMARK(SX_LOBJECT);
-+            PUTMARK(SX_OBJECT);
-+            W64LEN(tagval);
-+            return 0;
-+        }
-+        else
- #endif
--	{
--	    I32 ltagval;
-+        {
-+            I32 ltagval;
- 
--	    ltagval = htonl((I32)tagval);
-+            ltagval = htonl((I32)tagval);
- 
--	    TRACEME(("object 0x%" UVxf " seen as #%d", PTR2UV(sv),
--		     ntohl(ltagval)));
-+            TRACEME(("object 0x%" UVxf " seen as #%d", PTR2UV(sv),
-+                     ntohl(ltagval)));
- 
--	    PUTMARK(SX_OBJECT);
--	    WRITE_I32(ltagval);
--	    return 0;
--	}
-+            PUTMARK(SX_OBJECT);
-+            WRITE_I32(ltagval);
-+            return 0;
-+        }
-     }
- 
-     /*
-@@ -4523,7 +4521,7 @@ static int magic_write(pTHX_ stcxt_t *cxt)
-  * dclone() and store() is performed to memory.
-  */
- static int do_store(pTHX_
--	PerlIO *f,
-+        PerlIO *f,
-         SV *sv,
-         int optype,
-         int network_order,
-@@ -4573,9 +4571,9 @@ static int do_store(pTHX_
- 
-     if (!SvROK(sv))
-         CROAK(("Not a reference"));
--    sv = SvRV(sv);		/* So follow it to know what to store */
-+    sv = SvRV(sv);              /* So follow it to know what to store */
- 
--    /* 
-+    /*
-      * If we're going to store to memory, reset the buffer.
-      */
- 
-@@ -4588,8 +4586,8 @@ static int do_store(pTHX_
- 
-     init_store_context(aTHX_ cxt, f, optype, network_order);
- 
--    if (-1 == magic_write(aTHX_ cxt))	/* Emit magic and ILP info */
--        return 0;			/* Error */
-+    if (-1 == magic_write(aTHX_ cxt))   /* Emit magic and ILP info */
-+        return 0;                       /* Error */
- 
-     /*
-      * Recursively store object...
-@@ -4597,7 +4595,7 @@ static int do_store(pTHX_
- 
-     ASSERT(is_storing(aTHX), ("within store operation"));
- 
--    status = store(aTHX_ cxt, sv);	/* Just do it! */
-+    status = store(aTHX_ cxt, sv);      /* Just do it! */
- 
-     /*
-      * If they asked for a memory store and they provided an SV pointer,
-@@ -4669,7 +4667,7 @@ static SV *retrieve_other(pTHX_ stcxt_t *cxt, const char *cname)
-     if (
-         cxt->ver_major != STORABLE_BIN_MAJOR &&
-         cxt->ver_minor != STORABLE_BIN_MINOR
--	) {
-+        ) {
-         CROAK(("Corrupted storable %s (binary v%d.%d), current is v%d.%d",
-                cxt->fio ? "file" : "string",
-                cxt->ver_major, cxt->ver_minor,
-@@ -4680,7 +4678,7 @@ static SV *retrieve_other(pTHX_ stcxt_t *cxt, const char *cname)
-                cxt->ver_major, cxt->ver_minor));
-     }
- 
--    return (SV *) 0;		/* Just in case */
-+    return (SV *) 0;            /* Just in case */
- }
- 
- /*
-@@ -4700,7 +4698,7 @@ static SV *retrieve_idx_blessed(pTHX_ stcxt_t *cxt, const char *cname)
-     TRACEME(("retrieve_idx_blessed (#%d)", (int)cxt->tagnum));
-     ASSERT(!cname, ("no bless-into class given here, got %s", cname));
- 
--    GETMARK(idx);			/* Index coded on a single char? */
-+    GETMARK(idx);                       /* Index coded on a single char? */
-     if (idx & 0x80)
-         RLEN(idx);
- 
-@@ -4713,7 +4711,7 @@ static SV *retrieve_idx_blessed(pTHX_ stcxt_t *cxt, const char *cname)
-         CROAK(("Class name #%" IVdf " should have been seen already",
-                (IV) idx));
- 
--    classname = SvPVX(*sva);	/* We know it's a PV, by construction */
-+    classname = SvPVX(*sva);    /* We know it's a PV, by construction */
- 
-     TRACEME(("class ID %d => %s", (int)idx, classname));
- 
-@@ -4737,7 +4735,7 @@ static SV *retrieve_blessed(pTHX_ stcxt_t *cxt, const char *cname)
- {
-     U32 len;
-     SV *sv;
--    char buf[LG_BLESS + 1];		/* Avoid malloc() if possible */
-+    char buf[LG_BLESS + 1];             /* Avoid malloc() if possible */
-     char *classname = buf;
-     char *malloced_classname = NULL;
- 
-@@ -4752,7 +4750,7 @@ static SV *retrieve_blessed(pTHX_ stcxt_t *cxt, const char *cname)
-      * single byte, and the string can be read on the stack.
-      */
- 
--    GETMARK(len);			/* Length coded on a single char? */
-+    GETMARK(len);                       /* Length coded on a single char? */
-     if (len & 0x80) {
-         RLEN(len);
-         TRACEME(("** allocating %ld bytes for class name", (long)len+1));
-@@ -4767,7 +4765,7 @@ static SV *retrieve_blessed(pTHX_ stcxt_t *cxt, const char *cname)
-         malloced_classname = classname;
-     }
-     SAFEPVREAD(classname, (I32)len, malloced_classname);
--    classname[len] = '\0';		/* Mark string end */
-+    classname[len] = '\0';              /* Mark string end */
- 
-     /*
-      * It's a new classname, otherwise it would have been an SX_IX_BLESS.
-@@ -4815,7 +4813,7 @@ static SV *retrieve_blessed(pTHX_ stcxt_t *cxt, const char *cname)
- static SV *retrieve_hook_common(pTHX_ stcxt_t *cxt, const char *cname, int large)
- {
-     U32 len;
--    char buf[LG_BLESS + 1];		/* Avoid malloc() if possible */
-+    char buf[LG_BLESS + 1];             /* Avoid malloc() if possible */
-     char *classname = buf;
-     unsigned int flags;
-     STRLEN len2;
-@@ -4894,9 +4892,9 @@ static SV *retrieve_hook_common(pTHX_ stcxt_t *cxt, const char *cname, int large
-         }
-         break;
-     default:
--        return retrieve_other(aTHX_ cxt, 0);	/* Let it croak */
-+        return retrieve_other(aTHX_ cxt, 0);    /* Let it croak */
-     }
--    SEEN0_NN(sv, 0);				/* Don't bless yet */
-+    SEEN0_NN(sv, 0);                            /* Don't bless yet */
- 
-     /*
-      * Whilst flags tell us to recurse, do so.
-@@ -4939,7 +4937,7 @@ static SV *retrieve_hook_common(pTHX_ stcxt_t *cxt, const char *cname, int large
-             CROAK(("Class name #%" IVdf " should have been seen already",
-                    (IV) idx));
- 
--        classname = SvPVX(*sva);	/* We know it's a PV, by construction */
-+        classname = SvPVX(*sva);        /* We know it's a PV, by construction */
-         TRACEME(("class ID %d => %s", (int)idx, classname));
- 
-     } else {
-@@ -4970,7 +4968,7 @@ static SV *retrieve_hook_common(pTHX_ stcxt_t *cxt, const char *cname, int large
-         }
- 
-         SAFEPVREAD(classname, (I32)len, malloced_classname);
--        classname[len] = '\0';		/* Mark string end */
-+        classname[len] = '\0';          /* Mark string end */
- 
-         /*
-          * Record new classname.
-@@ -5012,8 +5010,8 @@ static SV *retrieve_hook_common(pTHX_ stcxt_t *cxt, const char *cname, int large
-     }
-     SvCUR_set(frozen, len2);
-     *SvEND(frozen) = '\0';
--    (void) SvPOK_only(frozen);		/* Validates string pointer */
--    if (cxt->s_tainted)			/* Is input source tainted? */
-+    (void) SvPOK_only(frozen);          /* Validates string pointer */
-+    if (cxt->s_tainted)                 /* Is input source tainted? */
-         SvTAINT(frozen);
- 
-     TRACEME(("frozen string: %d bytes", (int)len2));
-@@ -5025,22 +5023,22 @@ static SV *retrieve_hook_common(pTHX_ stcxt_t *cxt, const char *cname, int large
-     if (flags & SHF_HAS_LIST) {
-         if (flags & SHF_LARGE_LISTLEN) {
-             RLEN(len3);
--	    if (len3 < 0) {
-+            if (len3 < 0) {
- #ifdef HAS_U64
--	        ++has_large_oids;
--		len3 = -len3;
-+                ++has_large_oids;
-+                len3 = -len3;
- #else
--		CROAK(("Large object ids in hook data not supported on 32-bit platforms"));
-+                CROAK(("Large object ids in hook data not supported on 32-bit platforms"));
- #endif
--	        
--	    }
--	}
--	else
-+
-+            }
-+        }
-+        else
-             GETMARK(len3);
-         if (len3) {
-             av = newAV();
--            av_extend(av, len3 + 1);	/* Leave room for [0] */
--            AvFILLp(av) = len3;		/* About to be filled anyway */
-+            av_extend(av, len3 + 1);    /* Leave room for [0] */
-+            AvFILLp(av) = len3;         /* About to be filled anyway */
-         }
-     }
- 
-@@ -5059,23 +5057,23 @@ static SV *retrieve_hook_common(pTHX_ stcxt_t *cxt, const char *cname, int large
-     if (av) {
-         SV **ary = AvARRAY(av);
-         int i;
--        for (i = 1; i <= len3; i++) {	/* We leave [0] alone */
-+        for (i = 1; i <= len3; i++) {   /* We leave [0] alone */
-             ntag_t tag;
-             SV **svh;
-             SV *xsv;
- 
- #ifdef HAS_U64
--	    if (has_large_oids) {
--		READ_U64(tag);
--	    }
--	    else {
--		U32 tmp;
--		READ_I32(tmp);
--		tag = ntohl(tmp);
--	    }
-+            if (has_large_oids) {
-+                READ_U64(tag);
-+            }
-+            else {
-+                U32 tmp;
-+                READ_I32(tmp);
-+                tag = ntohl(tmp);
-+            }
- #else
--	    READ_I32(tag);
--	    tag = ntohl(tag);
-+            READ_I32(tag);
-+            tag = ntohl(tag);
- #endif
- 
-             svh = av_fetch(cxt->aseen, tag, FALSE);
-@@ -5132,7 +5130,7 @@ static SV *retrieve_hook_common(pTHX_ stcxt_t *cxt, const char *cname, int large
-         sv_free((SV *) av);
-         SvREFCNT_dec(attach_hook);
-         if (attached &&
--            SvROK(attached) && 
-+            SvROK(attached) &&
-             sv_derived_from(attached, classname)
-             ) {
-             UNSEE();
-@@ -5240,7 +5238,7 @@ static SV *retrieve_hook_common(pTHX_ stcxt_t *cxt, const char *cname, int large
- 
-     TRACEME(("retrieving magic object for 0x%" UVxf "...", PTR2UV(sv)));
- 
--    rv = retrieve(aTHX_ cxt, 0);	/* Retrieve <magic object> */
-+    rv = retrieve(aTHX_ cxt, 0);        /* Retrieve <magic object> */
- 
-     TRACEME(("restoring the magic object 0x%" UVxf " part of 0x%" UVxf,
-              PTR2UV(rv), PTR2UV(sv)));
-@@ -5266,9 +5264,9 @@ static SV *retrieve_hook_common(pTHX_ stcxt_t *cxt, const char *cname, int large
-      * means the hook cannot know it deals with an object whose variable is
-      * tied.  But this is happening when retrieving $o in the following case:
-      *
--     *	my %h;
-+     *  my %h;
-      *  tie %h, 'FOO';
--     *	my $o = bless \%h, 'BAR';
-+     *  my $o = bless \%h, 'BAR';
-      *
-      * The 'BAR' class is NOT the one where %h is tied into.  Therefore, as
-      * far as the 'BAR' class is concerned, the fact that %h is not a REAL
-@@ -5284,7 +5282,7 @@ static SV *retrieve_hook_common(pTHX_ stcxt_t *cxt, const char *cname, int large
-      */
- 
-     sv_magic(sv, rv, mtype, (char *)NULL, 0);
--    SvREFCNT_dec(rv);			/* Undo refcnt inc from sv_magic() */
-+    SvREFCNT_dec(rv);                   /* Undo refcnt inc from sv_magic() */
- 
-     return sv;
- }
-@@ -5321,10 +5319,10 @@ static SV *retrieve_ref(pTHX_ stcxt_t *cxt, const char *cname)
-         stash = gv_stashpv(cname, GV_ADD);
-     else
-         stash = 0;
--    SEEN_NN(rv, stash, 0);	/* Will return if rv is null */
-+    SEEN_NN(rv, stash, 0);      /* Will return if rv is null */
-     sv = retrieve(aTHX_ cxt, 0);/* Retrieve <object> */
-     if (!sv)
--        return (SV *) 0;	/* Failed */
-+        return (SV *) 0;        /* Failed */
- 
-     /*
-      * WARNING: breaks RV encapsulation.
-@@ -5335,7 +5333,7 @@ static SV *retrieve_ref(pTHX_ stcxt_t *cxt, const char *cname)
-      *
-      * We don't say:
-      *
--     *		SvRV(rv) = SvREFCNT_inc(sv);
-+     *          SvRV(rv) = SvREFCNT_inc(sv);
-      *
-      * here because the reference count we got from retrieve() above is
-      * already correct: if the object was retrieved from the file, then
-@@ -5350,7 +5348,7 @@ static SV *retrieve_ref(pTHX_ stcxt_t *cxt, const char *cname)
-         sv_upgrade(rv, SVt_RV);
-     }
- 
--    SvRV_set(rv, sv);		/* $rv = \$sv */
-+    SvRV_set(rv, sv);           /* $rv = \$sv */
-     SvROK_on(rv);
-     /*if (cxt->entry && ++cxt->ref_cnt > MAX_REF_CNT) {
-         CROAK(("Max. recursion depth with nested refs exceeded"));
-@@ -5404,19 +5402,19 @@ static SV *retrieve_overloaded(pTHX_ stcxt_t *cxt, const char *cname)
- 
-     rv = NEWSV(10002, 0);
-     stash = cname ? gv_stashpv(cname, GV_ADD) : 0;
--    SEEN_NN(rv, stash, 0);	     /* Will return if rv is null */
-+    SEEN_NN(rv, stash, 0);           /* Will return if rv is null */
-     cxt->in_retrieve_overloaded = 1; /* so sv_bless doesn't call S_reset_amagic */
-     sv = retrieve(aTHX_ cxt, 0);     /* Retrieve <object> */
-     cxt->in_retrieve_overloaded = 0;
-     if (!sv)
--        return (SV *) 0;	/* Failed */
-+        return (SV *) 0;        /* Failed */
- 
-     /*
-      * WARNING: breaks RV encapsulation.
-      */
- 
-     SvUPGRADE(rv, SVt_RV);
--    SvRV_set(rv, sv);		/* $rv = \$sv */
-+    SvRV_set(rv, sv);           /* $rv = \$sv */
-     SvROK_on(rv);
- 
-     /*
-@@ -5494,14 +5492,14 @@ static SV *retrieve_tied_array(pTHX_ stcxt_t *cxt, const char *cname)
- 
-     tv = NEWSV(10002, 0);
-     stash = cname ? gv_stashpv(cname, GV_ADD) : 0;
--    SEEN_NN(tv, stash, 0);		/* Will return if tv is null */
--    sv = retrieve(aTHX_ cxt, 0);	/* Retrieve <object> */
-+    SEEN_NN(tv, stash, 0);              /* Will return if tv is null */
-+    sv = retrieve(aTHX_ cxt, 0);        /* Retrieve <object> */
-     if (!sv)
--        return (SV *) 0;		/* Failed */
-+        return (SV *) 0;                /* Failed */
- 
-     sv_upgrade(tv, SVt_PVAV);
-     sv_magic(tv, sv, 'P', (char *)NULL, 0);
--    SvREFCNT_dec(sv);			/* Undo refcnt inc from sv_magic() */
-+    SvREFCNT_dec(sv);                   /* Undo refcnt inc from sv_magic() */
- 
-     TRACEME(("ok (retrieve_tied_array at 0x%" UVxf ")", PTR2UV(tv)));
- 
-@@ -5528,14 +5526,14 @@ static SV *retrieve_tied_hash(pTHX_ stcxt_t *cxt, const char *cname)
- 
-     tv = NEWSV(10002, 0);
-     stash = cname ? gv_stashpv(cname, GV_ADD) : 0;
--    SEEN_NN(tv, stash, 0);		/* Will return if tv is null */
--    sv = retrieve(aTHX_ cxt, 0);	/* Retrieve <object> */
-+    SEEN_NN(tv, stash, 0);              /* Will return if tv is null */
-+    sv = retrieve(aTHX_ cxt, 0);        /* Retrieve <object> */
-     if (!sv)
--        return (SV *) 0;		/* Failed */
-+        return (SV *) 0;                /* Failed */
- 
-     sv_upgrade(tv, SVt_PVHV);
-     sv_magic(tv, sv, 'P', (char *)NULL, 0);
--    SvREFCNT_dec(sv);			/* Undo refcnt inc from sv_magic() */
-+    SvREFCNT_dec(sv);                   /* Undo refcnt inc from sv_magic() */
- 
-     TRACEME(("ok (retrieve_tied_hash at 0x%" UVxf ")", PTR2UV(tv)));
- 
-@@ -5562,10 +5560,10 @@ static SV *retrieve_tied_scalar(pTHX_ stcxt_t *cxt, const char *cname)
- 
-     tv = NEWSV(10002, 0);
-     stash = cname ? gv_stashpv(cname, GV_ADD) : 0;
--    SEEN_NN(tv, stash, 0);		/* Will return if rv is null */
--    sv = retrieve(aTHX_ cxt, 0);	/* Retrieve <object> */
-+    SEEN_NN(tv, stash, 0);              /* Will return if rv is null */
-+    sv = retrieve(aTHX_ cxt, 0);        /* Retrieve <object> */
-     if (!sv) {
--        return (SV *) 0;		/* Failed */
-+        return (SV *) 0;                /* Failed */
-     }
-     else if (SvTYPE(sv) != SVt_NULL) {
-         obj = sv;
-@@ -5605,19 +5603,19 @@ static SV *retrieve_tied_key(pTHX_ stcxt_t *cxt, const char *cname)
- 
-     tv = NEWSV(10002, 0);
-     stash = cname ? gv_stashpv(cname, GV_ADD) : 0;
--    SEEN_NN(tv, stash, 0);		/* Will return if tv is null */
--    sv = retrieve(aTHX_ cxt, 0);	/* Retrieve <object> */
-+    SEEN_NN(tv, stash, 0);              /* Will return if tv is null */
-+    sv = retrieve(aTHX_ cxt, 0);        /* Retrieve <object> */
-     if (!sv)
--        return (SV *) 0;		/* Failed */
-+        return (SV *) 0;                /* Failed */
- 
--    key = retrieve(aTHX_ cxt, 0);	/* Retrieve <key> */
-+    key = retrieve(aTHX_ cxt, 0);       /* Retrieve <key> */
-     if (!key)
--        return (SV *) 0;		/* Failed */
-+        return (SV *) 0;                /* Failed */
- 
-     sv_upgrade(tv, SVt_PVMG);
-     sv_magic(tv, sv, 'p', (char *)key, HEf_SVKEY);
--    SvREFCNT_dec(key);			/* Undo refcnt inc from sv_magic() */
--    SvREFCNT_dec(sv);			/* Undo refcnt inc from sv_magic() */
-+    SvREFCNT_dec(key);                  /* Undo refcnt inc from sv_magic() */
-+    SvREFCNT_dec(sv);                   /* Undo refcnt inc from sv_magic() */
- 
-     return tv;
- }
-@@ -5643,16 +5641,16 @@ static SV *retrieve_tied_idx(pTHX_ stcxt_t *cxt, const char *cname)
- 
-     tv = NEWSV(10002, 0);
-     stash = cname ? gv_stashpv(cname, GV_ADD) : 0;
--    SEEN_NN(tv, stash, 0);		/* Will return if tv is null */
--    sv = retrieve(aTHX_ cxt, 0);	/* Retrieve <object> */
-+    SEEN_NN(tv, stash, 0);              /* Will return if tv is null */
-+    sv = retrieve(aTHX_ cxt, 0);        /* Retrieve <object> */
-     if (!sv)
--        return (SV *) 0;		/* Failed */
-+        return (SV *) 0;                /* Failed */
- 
--    RLEN(idx);				/* Retrieve <idx> */
-+    RLEN(idx);                          /* Retrieve <idx> */
- 
-     sv_upgrade(tv, SVt_PVMG);
-     sv_magic(tv, sv, 'p', (char *)NULL, idx);
--    SvREFCNT_dec(sv);			/* Undo refcnt inc from sv_magic() */
-+    SvREFCNT_dec(sv);                   /* Undo refcnt inc from sv_magic() */
- 
-     return tv;
- }
-@@ -5675,7 +5673,7 @@ static SV *get_lstring(pTHX_ stcxt_t *cxt, UV len, int isutf8, const char *cname
- 
-     sv = NEWSV(10002, len);
-     stash = cname ? gv_stashpv(cname, GV_ADD) : 0;
--    SEEN_NN(sv, stash, 0);	/* Associate this new scalar with tag "tagnum" */
-+    SEEN_NN(sv, stash, 0);      /* Associate this new scalar with tag "tagnum" */
- 
-     if (len ==  0) {
-         SvPVCLEAR(sv);
-@@ -5692,11 +5690,11 @@ static SV *get_lstring(pTHX_ stcxt_t *cxt, UV len, int isutf8, const char *cname
-      */
- 
-     SAFEREAD(SvPVX(sv), len, sv);
--    SvCUR_set(sv, len);			/* Record C string length */
--    *SvEND(sv) = '\0';			/* Ensure it's null terminated anyway */
--    (void) SvPOK_only(sv);		/* Validate string pointer */
--    if (cxt->s_tainted)			/* Is input source tainted? */
--        SvTAINT(sv);			/* External data cannot be trusted */
-+    SvCUR_set(sv, len);                 /* Record C string length */
-+    *SvEND(sv) = '\0';                  /* Ensure it's null terminated anyway */
-+    (void) SvPOK_only(sv);              /* Validate string pointer */
-+    if (cxt->s_tainted)                 /* Is input source tainted? */
-+        SvTAINT(sv);                    /* External data cannot be trusted */
- 
-     /* Check for CVE-215-1592 */
-     if (cname && len == 13 && strEQc(cname, "CGITempFile")
-@@ -5824,7 +5822,7 @@ static SV *retrieve_vstring(pTHX_ stcxt_t *cxt, const char *cname)
-     READ(s, len);
-     sv = retrieve(aTHX_ cxt, cname);
-     if (!sv)
--        return (SV *) 0;		/* Failed */
-+        return (SV *) 0;                /* Failed */
-     sv_magic(sv,NULL,PERL_MAGIC_vstring,s,len);
-     /* 5.10.0 and earlier seem to need this */
-     SvRMAGICAL_on(sv);
-@@ -5866,7 +5864,7 @@ static SV *retrieve_lvstring(pTHX_ stcxt_t *cxt, const char *cname)
-     sv = retrieve(aTHX_ cxt, cname);
-     if (!sv) {
-         Safefree(s);
--        return (SV *) 0;		/* Failed */
-+        return (SV *) 0;                /* Failed */
-     }
-     sv_magic(sv,NULL,PERL_MAGIC_vstring,s,len);
-     /* 5.10.0 and earlier seem to need this */
-@@ -5899,7 +5897,7 @@ static SV *retrieve_integer(pTHX_ stcxt_t *cxt, const char *cname)
-     READ(&iv, sizeof(iv));
-     sv = newSViv(iv);
-     stash = cname ? gv_stashpv(cname, GV_ADD) : 0;
--    SEEN_NN(sv, stash, 0);	/* Associate this new scalar with tag "tagnum" */
-+    SEEN_NN(sv, stash, 0);      /* Associate this new scalar with tag "tagnum" */
- 
-     TRACEME(("integer %" IVdf, iv));
-     TRACEME(("ok (retrieve_integer at 0x%" UVxf ")", PTR2UV(sv)));
-@@ -5973,12 +5971,12 @@ static SV *retrieve_lobject(pTHX_ stcxt_t *cxt, const char *cname)
- #ifdef HAS_U64
- 
-     if (type == SX_FLAG_HASH) {
--	/* we write the flags immediately after the op.  I could have
--	   changed the writer, but this may allow someone to recover
--	   data they're already frozen, though such a very large hash
--	   seems unlikely.
--	*/
--	GETMARK(hash_flags);
-+        /* we write the flags immediately after the op.  I could have
-+           changed the writer, but this may allow someone to recover
-+           data they're already frozen, though such a very large hash
-+           seems unlikely.
-+        */
-+        GETMARK(hash_flags);
-     }
-     else if (type == SX_HOOK) {
-         return retrieve_hook_common(aTHX_ cxt, cname, TRUE);
-@@ -6025,7 +6023,7 @@ static SV *retrieve_lobject(pTHX_ stcxt_t *cxt, const char *cname)
- #else
-     PERL_UNUSED_ARG(cname);
- 
--    /* previously this (brokenly) checked the length value and only failed if 
-+    /* previously this (brokenly) checked the length value and only failed if
-        the length was over 4G.
-        Since this op should only occur with objects over 4GB (or 2GB) we can just
-        reject it.
-@@ -6057,7 +6055,7 @@ static SV *retrieve_netint(pTHX_ stcxt_t *cxt, const char *cname)
-     TRACEME(("network integer (as-is) %d", iv));
- #endif
-     stash = cname ? gv_stashpv(cname, GV_ADD) : 0;
--    SEEN_NN(sv, stash, 0);	/* Associate this new scalar with tag "tagnum" */
-+    SEEN_NN(sv, stash, 0);      /* Associate this new scalar with tag "tagnum" */
- 
-     TRACEME(("ok (retrieve_netint at 0x%" UVxf ")", PTR2UV(sv)));
- 
-@@ -6081,7 +6079,7 @@ static SV *retrieve_double(pTHX_ stcxt_t *cxt, const char *cname)
-     READ(&nv, sizeof(nv));
-     sv = newSVnv(nv);
-     stash = cname ? gv_stashpv(cname, GV_ADD) : 0;
--    SEEN_NN(sv, stash, 0);	/* Associate this new scalar with tag "tagnum" */
-+    SEEN_NN(sv, stash, 0);      /* Associate this new scalar with tag "tagnum" */
- 
-     TRACEME(("double %" NVff, nv));
-     TRACEME(("ok (retrieve_double at 0x%" UVxf ")", PTR2UV(sv)));
-@@ -6104,7 +6102,7 @@ static SV *retrieve_byte(pTHX_ stcxt_t *cxt, const char *cname)
-     /* MSVC 2017 doesn't handle the AIX workaround well */
-     int tmp;
- #else
--    signed char tmp;	/* Workaround for AIX cc bug --H.Merijn Brand */
-+    signed char tmp;    /* Workaround for AIX cc bug --H.Merijn Brand */
- #endif
- 
-     TRACEME(("retrieve_byte (#%d)", (int)cxt->tagnum));
-@@ -6114,7 +6112,7 @@ static SV *retrieve_byte(pTHX_ stcxt_t *cxt, const char *cname)
-     tmp = (unsigned char) siv - 128;
-     sv = newSViv(tmp);
-     stash = cname ? gv_stashpv(cname, GV_ADD) : 0;
--    SEEN_NN(sv, stash, 0);	/* Associate this new scalar with tag "tagnum" */
-+    SEEN_NN(sv, stash, 0);      /* Associate this new scalar with tag "tagnum" */
- 
-     TRACEME(("byte %d", tmp));
-     TRACEME(("ok (retrieve_byte at 0x%" UVxf ")", PTR2UV(sv)));
-@@ -6247,7 +6245,7 @@ static SV *retrieve_array(pTHX_ stcxt_t *cxt, const char *cname)
-     if (len)
-         av_extend(av, len);
-     else
--        return (SV *) av;	/* No data follow if array is empty */
-+        return (SV *) av;       /* No data follow if array is empty */
- 
-     /*
-      * Now get each item in turn...
-@@ -6255,7 +6253,7 @@ static SV *retrieve_array(pTHX_ stcxt_t *cxt, const char *cname)
- 
-     for (i = 0; i < len; i++) {
-         TRACEME(("(#%d) item", (int)i));
--        sv = retrieve(aTHX_ cxt, 0);	/* Retrieve item */
-+        sv = retrieve(aTHX_ cxt, 0);    /* Retrieve item */
-         if (!sv)
-             return (SV *) 0;
-         if (sv == &PL_sv_undef) {
-@@ -6304,7 +6302,7 @@ static SV *get_larray(pTHX_ stcxt_t *cxt, UV len, const char *cname)
- 
-     for (i = 0; i < len; i++) {
-         TRACEME(("(#%d) item", (int)i));
--        sv = retrieve(aTHX_ cxt, 0);		/* Retrieve item */
-+        sv = retrieve(aTHX_ cxt, 0);            /* Retrieve item */
-         if (!sv)
-             return (SV *) 0;
-         if (sv == &PL_sv_undef) {
-@@ -6345,7 +6343,7 @@ static SV *get_lhash(pTHX_ stcxt_t *cxt, UV len, int hash_flags, const char *cna
- 
- #ifdef HAS_RESTRICTED_HASHES
-     PERL_UNUSED_ARG(hash_flags);
--#else        
-+#else
-     if (hash_flags & SHV_RESTRICTED) {
-         if (cxt->derestrict < 0)
-             cxt->derestrict = (SvTRUE
-@@ -6359,11 +6357,11 @@ static SV *get_lhash(pTHX_ stcxt_t *cxt, UV len, int hash_flags, const char *cna
-     TRACEME(("size = %lu", (unsigned long)len));
-     hv = newHV();
-     stash = cname ? gv_stashpv(cname, GV_ADD) : 0;
--    SEEN_NN(hv, stash, 0);	/* Will return if table not allocated properly */
-+    SEEN_NN(hv, stash, 0);      /* Will return if table not allocated properly */
-     if (len == 0)
--        return (SV *) hv;	/* No data follow if table empty */
-+        return (SV *) hv;       /* No data follow if table empty */
-     TRACEME(("split %lu", (unsigned long)len+1));
--    hv_ksplit(hv, len+1);	/* pre-extend hash to save multiple splits */
-+    hv_ksplit(hv, len+1);       /* pre-extend hash to save multiple splits */
- 
-     /*
-      * Now get each key/value pair in turn...
-@@ -6386,11 +6384,11 @@ static SV *get_lhash(pTHX_ stcxt_t *cxt, UV len, int hash_flags, const char *cna
-          * Hence the key comes after the value.
-          */
- 
--        RLEN(size);		/* Get key size */
--        KBUFCHK((STRLEN)size);	/* Grow hash key read pool if needed */
-+        RLEN(size);             /* Get key size */
-+        KBUFCHK((STRLEN)size);  /* Grow hash key read pool if needed */
-         if (size)
-             READ(kbuf, size);
--        kbuf[size] = '\0';	/* Mark string end, just in case */
-+        kbuf[size] = '\0';      /* Mark string end, just in case */
-         TRACEME(("(#%d) key '%s'", (int)i, kbuf));
- 
-         /*
-@@ -6436,11 +6434,11 @@ static SV *retrieve_hash(pTHX_ stcxt_t *cxt, const char *cname)
-     TRACEME(("size = %d", (int)len));
-     hv = newHV();
-     stash = cname ? gv_stashpv(cname, GV_ADD) : 0;
--    SEEN_NN(hv, stash, 0);	/* Will return if table not allocated properly */
-+    SEEN_NN(hv, stash, 0);      /* Will return if table not allocated properly */
-     if (len == 0)
--        return (SV *) hv;	/* No data follow if table empty */
-+        return (SV *) hv;       /* No data follow if table empty */
-     TRACEME(("split %d", (int)len+1));
--    hv_ksplit(hv, len+1);	/* pre-extend hash to save multiple splits */
-+    hv_ksplit(hv, len+1);       /* pre-extend hash to save multiple splits */
- 
-     /*
-      * Now get each key/value pair in turn...
-@@ -6463,11 +6461,11 @@ static SV *retrieve_hash(pTHX_ stcxt_t *cxt, const char *cname)
-          * Hence the key comes after the value.
-          */
- 
--        RLEN(size);		/* Get key size */
--        KBUFCHK((STRLEN)size);	/* Grow hash key read pool if needed */
-+        RLEN(size);             /* Get key size */
-+        KBUFCHK((STRLEN)size);  /* Grow hash key read pool if needed */
-         if (size)
-             READ(kbuf, size);
--        kbuf[size] = '\0';	/* Mark string end, just in case */
-+        kbuf[size] = '\0';      /* Mark string end, just in case */
-         TRACEME(("(#%d) key '%s'", (int)i, kbuf));
- 
-         /*
-@@ -6526,11 +6524,11 @@ static SV *retrieve_flag_hash(pTHX_ stcxt_t *cxt, const char *cname)
-     TRACEME(("size = %d, flags = %d", (int)len, hash_flags));
-     hv = newHV();
-     stash = cname ? gv_stashpv(cname, GV_ADD) : 0;
--    SEEN_NN(hv, stash, 0);	/* Will return if table not allocated properly */
-+    SEEN_NN(hv, stash, 0);      /* Will return if table not allocated properly */
-     if (len == 0)
--        return (SV *) hv;	/* No data follow if table empty */
-+        return (SV *) hv;       /* No data follow if table empty */
-     TRACEME(("split %d", (int)len+1));
--    hv_ksplit(hv, len+1);	/* pre-extend hash to save multiple splits */
-+    hv_ksplit(hv, len+1);       /* pre-extend hash to save multiple splits */
- 
-     /*
-      * Now get each key/value pair in turn...
-@@ -6597,11 +6595,11 @@ static SV *retrieve_flag_hash(pTHX_ stcxt_t *cxt, const char *cname)
-                 store_flags |= HVhek_WASUTF8;
- #endif
- 
--            RLEN(size);		/* Get key size */
-+            RLEN(size);         /* Get key size */
-             KBUFCHK((STRLEN)size);/* Grow hash key read pool if needed */
-             if (size)
-                 READ(kbuf, size);
--            kbuf[size] = '\0';	/* Mark string end, just in case */
-+            kbuf[size] = '\0';  /* Mark string end, just in case */
-             TRACEME(("(#%d) key '%s' flags %X store_flags %X", (int)i, kbuf,
-                      flags, store_flags));
- 
-@@ -6721,7 +6719,7 @@ static SV *retrieve_code(pTHX_ stcxt_t *cxt, const char *cname)
-     SAVETMPS;
- 
-     errsv = get_sv("@", GV_ADD);
--    SvPVCLEAR(errsv);	/* clear $@ */
-+    SvPVCLEAR(errsv);   /* clear $@ */
-     if (SvROK(cxt->eval) && SvTYPE(SvRV(cxt->eval)) == SVt_PVCV) {
-         PUSHMARK(sp);
-         XPUSHs(sv_2mortal(newSVsv(sub)));
-@@ -6820,7 +6818,7 @@ static SV *retrieve_regexp(pTHX_ stcxt_t *cxt, const char *cname) {
-     SvREFCNT_inc(sv);
-     stash = cname ? gv_stashpv(cname, GV_ADD) : 0;
-     SEEN_NN(sv, stash, 0);
--    
-+
-     FREETMPS;
-     LEAVE;
- 
-@@ -6858,11 +6856,11 @@ static SV *old_retrieve_array(pTHX_ stcxt_t *cxt, const char *cname)
-     RLEN(len);
-     TRACEME(("size = %d", (int)len));
-     av = newAV();
--    SEEN0_NN(av, 0);	/* Will return if array not allocated nicely */
-+    SEEN0_NN(av, 0);    /* Will return if array not allocated nicely */
-     if (len)
-         av_extend(av, len);
-     else
--        return (SV *) av;	/* No data follow if array is empty */
-+        return (SV *) av;       /* No data follow if array is empty */
- 
-     /*
-      * Now get each item in turn...
-@@ -6872,12 +6870,12 @@ static SV *old_retrieve_array(pTHX_ stcxt_t *cxt, const char *cname)
-         GETMARK(c);
-         if (c == SX_IT_UNDEF) {
-             TRACEME(("(#%d) undef item", (int)i));
--            continue;		/* av_extend() already filled us with undef */
-+            continue;           /* av_extend() already filled us with undef */
-         }
-         if (c != SX_ITEM)
-             (void) retrieve_other(aTHX_ cxt, 0);/* Will croak out */
-         TRACEME(("(#%d) item", (int)i));
--        sv = retrieve(aTHX_ cxt, 0);		/* Retrieve item */
-+        sv = retrieve(aTHX_ cxt, 0);            /* Retrieve item */
-         if (!sv)
-             return (SV *) 0;
-         if (av_store(av, i, sv) == 0)
-@@ -6909,7 +6907,7 @@ static SV *old_retrieve_hash(pTHX_ stcxt_t *cxt, const char *cname)
-     HV *hv;
-     SV *sv = (SV *) 0;
-     int c;
--    SV *sv_h_undef = (SV *) 0;	/* hv_store() bug */
-+    SV *sv_h_undef = (SV *) 0;  /* hv_store() bug */
- 
-     PERL_UNUSED_ARG(cname);
-     TRACEME(("old_retrieve_hash (#%d)", (int)cxt->tagnum));
-@@ -6921,11 +6919,11 @@ static SV *old_retrieve_hash(pTHX_ stcxt_t *cxt, const char *cname)
-     RLEN(len);
-     TRACEME(("size = %d", (int)len));
-     hv = newHV();
--    SEEN0_NN(hv, 0);		/* Will return if table not allocated properly */
-+    SEEN0_NN(hv, 0);            /* Will return if table not allocated properly */
-     if (len == 0)
--        return (SV *) hv;	/* No data follow if table empty */
-+        return (SV *) hv;       /* No data follow if table empty */
-     TRACEME(("split %d", (int)len+1));
--    hv_ksplit(hv, len+1);	/* pre-extend hash to save multiple splits */
-+    hv_ksplit(hv, len+1);       /* pre-extend hash to save multiple splits */
- 
-     /*
-      * Now get each key/value pair in turn...
-@@ -6965,11 +6963,11 @@ static SV *old_retrieve_hash(pTHX_ stcxt_t *cxt, const char *cname)
-         GETMARK(c);
-         if (c != SX_KEY)
-             (void) retrieve_other(aTHX_ cxt, 0); /* Will croak out */
--        RLEN(size);				/* Get key size */
--        KBUFCHK((STRLEN)size);			/* Grow hash key read pool if needed */
-+        RLEN(size);                             /* Get key size */
-+        KBUFCHK((STRLEN)size);                  /* Grow hash key read pool if needed */
-         if (size)
-             READ(kbuf, size);
--        kbuf[size] = '\0';			/* Mark string end, just in case */
-+        kbuf[size] = '\0';                      /* Mark string end, just in case */
-         TRACEME(("(#%d) key '%s'", (int)i, kbuf));
- 
-         /*
-@@ -7032,10 +7030,10 @@ static SV *magic_check(pTHX_ stcxt_t *cxt)
-         STRLEN len = sizeof(magicstr);
-         STRLEN old_len;
- 
--        READ(buf, (SSize_t)(len));	/* Not null-terminated */
-+        READ(buf, (SSize_t)(len));      /* Not null-terminated */
- 
-         /* Point at the byte after the byte we read.  */
--        current = buf + --len;	/* Do the -- outside of macros.  */
-+        current = buf + --len;  /* Do the -- outside of macros.  */
- 
-         if (memNE(buf, magicstr, len)) {
-             /*
-@@ -7127,8 +7125,8 @@ static SV *magic_check(pTHX_ stcxt_t *cxt)
-      * information to check.
-      */
- 
--    if ((cxt->netorder = (use_network_order & 0x1)))	/* Extra () for -Wall */
--        return &PL_sv_undef;			/* No byte ordering info */
-+    if ((cxt->netorder = (use_network_order & 0x1)))    /* Extra () for -Wall */
-+        return &PL_sv_undef;                    /* No byte ordering info */
- 
-     /* In C truth is 1, falsehood is 0. Very convenient.  */
-     use_NV_size = version_major >= 2 && version_minor >= 2;
-@@ -7140,7 +7138,7 @@ static SV *magic_check(pTHX_ stcxt_t *cxt)
-         c = use_network_order;
-     }
-     length = c + 3 + use_NV_size;
--    READ(buf, length);	/* Not null-terminated */
-+    READ(buf, length);  /* Not null-terminated */
- 
-     TRACEME(("byte order '%.*s' %d", c, buf, c));
- 
-@@ -7179,7 +7177,7 @@ static SV *magic_check(pTHX_ stcxt_t *cxt)
-             CROAK(("Double size is not compatible"));
-     }
- 
--    return &PL_sv_undef;	/* OK */
-+    return &PL_sv_undef;        /* OK */
- }
- 
- /*
-@@ -7207,14 +7205,14 @@ static SV *retrieve(pTHX_ stcxt_t *cxt, const char *cname)
-      * no longer supported, hence the final "goto" in the "if" block.
-      */
- 
--    if (cxt->hseen) {			/* Retrieving old binary */
-+    if (cxt->hseen) {                   /* Retrieving old binary */
-         stag_t tag;
-         if (cxt->netorder) {
-             I32 nettag;
--            READ(&nettag, sizeof(I32));	/* Ordered sequence of I32 */
-+            READ(&nettag, sizeof(I32)); /* Ordered sequence of I32 */
-             tag = (stag_t) nettag;
-         } else
--            READ(&tag, sizeof(stag_t));	/* Original address of the SV */
-+            READ(&tag, sizeof(stag_t)); /* Original address of the SV */
- 
-         GETMARK(type);
-         if (type == SX_OBJECT) {
-@@ -7223,7 +7221,7 @@ static SV *retrieve(pTHX_ stcxt_t *cxt, const char *cname)
-             if (!svh)
-                 CROAK(("Old tag 0x%" UVxf " should have been mapped already",
-                        (UV) tag));
--            tagn = SvIV(*svh);	/* Mapped tag number computed earlier below */
-+            tagn = SvIV(*svh);  /* Mapped tag number computed earlier below */
- 
-             /*
-              * The following code is common with the SX_OBJECT case below.
-@@ -7235,8 +7233,8 @@ static SV *retrieve(pTHX_ stcxt_t *cxt, const char *cname)
-                        (IV) tagn));
-             sv = *svh;
-             TRACEME(("has retrieved #%d at 0x%" UVxf, (int)tagn, PTR2UV(sv)));
--            SvREFCNT_inc(sv);	/* One more reference to this same sv */
--            return sv;		/* The SV pointer where object was retrieved */
-+            SvREFCNT_inc(sv);   /* One more reference to this same sv */
-+            return sv;          /* The SV pointer where object was retrieved */
-         }
- 
-         /*
-@@ -7288,8 +7286,8 @@ static SV *retrieve(pTHX_ stcxt_t *cxt, const char *cname)
-                    (IV) tag));
-         sv = *svh;
-         TRACEME(("had retrieved #%d at 0x%" UVxf, (int)tag, PTR2UV(sv)));
--        SvREFCNT_inc(sv);	/* One more reference to this same sv */
--        return sv;		/* The SV pointer where object was retrieved */
-+        SvREFCNT_inc(sv);       /* One more reference to this same sv */
-+        return sv;              /* The SV pointer where object was retrieved */
-     } else if (type >= SX_LAST && cxt->ver_minor > STORABLE_BIN_MINOR) {
-         if (cxt->accept_future_minor < 0)
-             cxt->accept_future_minor
-@@ -7304,7 +7302,7 @@ static SV *retrieve(pTHX_ stcxt_t *cxt, const char *cname)
-         }
-     }
- 
-- first_time:	/* Will disappear when support for old format is dropped */
-+ first_time:    /* Will disappear when support for old format is dropped */
- 
-     /*
-      * Okay, first time through for this one.
-@@ -7312,7 +7310,7 @@ static SV *retrieve(pTHX_ stcxt_t *cxt, const char *cname)
- 
-     sv = RETRIEVE(cxt, type)(aTHX_ cxt, cname);
-     if (!sv)
--        return (SV *) 0;		/* Failed */
-+        return (SV *) 0;                /* Failed */
- 
-     /*
-      * Old binary formats (pre-0.7).
-@@ -7332,19 +7330,19 @@ static SV *retrieve(pTHX_ stcxt_t *cxt, const char *cname)
-             HV* stash;
-             switch (type) {
-             case SX_CLASS:
--                GETMARK(len);		/* Length coded on a single char */
-+                GETMARK(len);           /* Length coded on a single char */
-                 break;
--            case SX_LG_CLASS:		/* Length coded on a regular integer */
-+            case SX_LG_CLASS:           /* Length coded on a regular integer */
-                 RLEN(len);
-                 break;
-             case EOF:
-             default:
--                return (SV *) 0;	/* Failed */
-+                return (SV *) 0;        /* Failed */
-             }
--            KBUFCHK((STRLEN)len);	/* Grow buffer as necessary */
-+            KBUFCHK((STRLEN)len);       /* Grow buffer as necessary */
-             if (len)
-                 READ(kbuf, len);
--            kbuf[len] = '\0';		/* Mark string end */
-+            kbuf[len] = '\0';           /* Mark string end */
-             stash = gv_stashpvn(kbuf, len, GV_ADD);
-             BLESS(sv, stash);
-         }
-@@ -7353,7 +7351,7 @@ static SV *retrieve(pTHX_ stcxt_t *cxt, const char *cname)
-     TRACEME(("ok (retrieved 0x%" UVxf ", refcnt=%d, %s)", PTR2UV(sv),
-              (int)SvREFCNT(sv) - 1, sv_reftype(sv, FALSE)));
- 
--    return sv;	/* Ok */
-+    return sv;  /* Ok */
- }
- 
- /*
-@@ -7371,11 +7369,11 @@ static SV *do_retrieve(
- {
-     dSTCXT;
-     SV *sv;
--    int is_tainted;		/* Is input source tainted? */
--    int pre_06_fmt = 0;		/* True with pre Storable 0.6 formats */
-+    int is_tainted;             /* Is input source tainted? */
-+    int pre_06_fmt = 0;         /* True with pre Storable 0.6 formats */
- 
-     TRACEMED(("do_retrieve (optype = 0x%x, flags=0x%x)",
--	     (unsigned)optype, (unsigned)flags));
-+             (unsigned)optype, (unsigned)flags));
- 
-     optype |= ST_RETRIEVE;
-     cxt->flags = flags;
-@@ -7424,7 +7422,7 @@ static SV *do_retrieve(
-      * in the buffer (dclone case).
-      */
- 
--    KBUFINIT();			 /* Allocate hash key reading pool once */
-+    KBUFINIT();                  /* Allocate hash key reading pool once */
- 
-     if (!f && in) {
- #ifdef SvUTF8_on
-@@ -7475,7 +7473,7 @@ static SV *do_retrieve(
-      * some of the initializations.
-      */
- 
--    cxt->fio = f;			/* Where I/O are performed */
-+    cxt->fio = f;                       /* Where I/O are performed */
- 
-     if (!magic_check(aTHX_ cxt))
-         CROAK(("Magic number checking on storable %s failed",
-@@ -7509,15 +7507,15 @@ static SV *do_retrieve(
-     if (!f && in)
-         MBUF_RESTORE();
- 
--    pre_06_fmt = cxt->hseen != NULL;	/* Before we clean context */
-+    pre_06_fmt = cxt->hseen != NULL;    /* Before we clean context */
- 
-     /*
-      * The "root" context is never freed.
-      */
- 
-     clean_retrieve_context(aTHX_ cxt);
--    if (cxt->prev)			/* This context was stacked */
--        free_context(aTHX_ cxt);	/* It was not the "root" context */
-+    if (cxt->prev)                      /* This context was stacked */
-+        free_context(aTHX_ cxt);        /* It was not the "root" context */
- 
-     /*
-      * Prepare returned value.
-@@ -7525,7 +7523,7 @@ static SV *do_retrieve(
- 
-     if (!sv) {
-         TRACEMED(("retrieve ERROR"));
--        return &PL_sv_undef;		/* Something went wrong, return undef */
-+        return &PL_sv_undef;            /* Something went wrong, return undef */
-     }
- 
-     TRACEMED(("retrieve got %s(0x%" UVxf ")",
-@@ -7540,7 +7538,7 @@ static SV *do_retrieve(
-      * already one and not a scalar, for consistency reasons.
-      */
- 
--    if (pre_06_fmt) {			/* Was not handling overloading by then */
-+    if (pre_06_fmt) {                   /* Was not handling overloading by then */
-         SV *rv;
-         TRACEMED(("fixing for old formats -- pre 0.6"));
-         if (sv_type(aTHX_ sv) == svis_REF && (rv = SvRV(sv)) && SvOBJECT(rv)) {
-@@ -7655,15 +7653,15 @@ static SV *dclone(pTHX_ SV *sv)
-      */
- 
-     if (!do_store(aTHX_ (PerlIO*) 0, sv, ST_CLONE, FALSE, (SV**) 0))
--        return &PL_sv_undef;				/* Error during store */
-+        return &PL_sv_undef;                            /* Error during store */
- 
-     /*
-      * Because of the above optimization, we have to refresh the context,
-      * since a new one could have been allocated and stacked by do_store().
-      */
- 
--    { dSTCXT; real_context = cxt; }		/* Sub-block needed for macro */
--    cxt = real_context;					/* And we need this temporary... */
-+    { dSTCXT; real_context = cxt; }             /* Sub-block needed for macro */
-+    cxt = real_context;                                 /* And we need this temporary... */
- 
-     /*
-      * Now, 'cxt' may refer to a new context.
-@@ -7680,7 +7678,7 @@ static SV *dclone(pTHX_ SV *sv)
-     /*
-      * Since we're passing do_retrieve() both a NULL file and sv, we need
-      * to pre-compute the taintedness of the input by setting cxt->tainted
--     * to whatever state our own input string was.	-- RAM, 15/09/2000
-+     * to whatever state our own input string was.      -- RAM, 15/09/2000
-      *
-      * do_retrieve() will free non-root context.
-      */
-@@ -7708,9 +7706,9 @@ static SV *dclone(pTHX_ SV *sv)
-  */
- 
- #ifndef OutputStream
--#define OutputStream	PerlIO *
--#define InputStream	PerlIO *
--#endif	/* !OutputStream */
-+#define OutputStream    PerlIO *
-+#define InputStream     PerlIO *
-+#endif  /* !OutputStream */
- 
- static int
- storable_free(pTHX_ SV *sv, MAGIC* mg) {
-@@ -7730,7 +7728,7 @@ storable_free(pTHX_ SV *sv, MAGIC* mg) {
-     return 0;
- }
- 
--MODULE = Storable	PACKAGE = Storable
-+MODULE = Storable       PACKAGE = Storable
- 
- PROTOTYPES: ENABLE
- 
-@@ -7772,7 +7770,7 @@ CODE:
- SV *
- pstore(f,obj)
-     OutputStream f
--    SV*		obj
-+    SV*         obj
- ALIAS:
-     net_pstore = 1
- PPCODE:
-@@ -7794,7 +7792,7 @@ PPCODE:
- 
- SV *
- mstore(obj)
--    SV*	obj
-+    SV* obj
- ALIAS:
-     net_mstore = 1
- CODE:
-@@ -7806,8 +7804,8 @@ OUTPUT:
- 
- SV *
- pretrieve(f, flag = 6)
--    InputStream	f
--    IV		flag
-+    InputStream f
-+    IV          flag
- CODE:
-     RETVAL = pretrieve(aTHX_ f, flag);
- OUTPUT:
-@@ -7816,7 +7814,7 @@ OUTPUT:
- SV *
- mretrieve(sv, flag = 6)
-     SV* sv
--    IV	flag
-+    IV  flag
- CODE:
-     RETVAL = mretrieve(aTHX_ sv, flag);
- OUTPUT:
-@@ -7824,7 +7822,7 @@ OUTPUT:
- 
- SV *
- dclone(sv)
--    SV*	sv
-+    SV* sv
- CODE:
-     RETVAL = dclone(aTHX_ sv);
- OUTPUT:
-diff --git a/hints/hpux.pl b/hints/hpux.pl
-index 959d6fe..9435658 100644
---- a/hints/hpux.pl
-+++ b/hints/hpux.pl
-@@ -6,5 +6,5 @@ use Config;
- unless ($Config{gccversion}) {
-     my $optimize = $Config{optimize};
-     $optimize =~ s/(^| )[-+]O[2-9]( |$)/$1+O1$2/ and
--	$self->{OPTIMIZE} = $optimize;
--    }
-+        $self->{OPTIMIZE} = $optimize;
-+}
-diff --git a/hints/linux.pl b/hints/linux.pl
-index f6cc0fa..b563567 100644
---- a/hints/linux.pl
-+++ b/hints/linux.pl
-@@ -10,7 +10,7 @@ if ($Config{gccversion} and !$Config{usethreads}) {
-     my $optimize = $Config{optimize};
-     # works fine with gcc 4 or clang
-     if ($optimize =~ s/(^| )-O[3-9]( |$)/$1-O2$2/ and $Config{gccversion} =~ /^[23]\./) {
--	$self->{OPTIMIZE} = $optimize;
-+        $self->{OPTIMIZE} = $optimize;
-     }
- }
- 
-diff --git a/Storable.pm b/lib/Storable.pm
-similarity index 86%
-rename from Storable.pm
-rename to lib/Storable.pm
-index d531f2b..dce9843 100644
---- a/Storable.pm
-+++ b/lib/Storable.pm
-@@ -8,38 +8,41 @@
- #  in the README file that comes with the distribution.
- #
- 
--BEGIN { require XSLoader }
--require Exporter;
- package Storable;
-+use strict;
-+
-+use XSLoader ();
-+use Exporter ();
- 
- our @ISA = qw(Exporter);
- our @EXPORT = qw(store retrieve);
- our @EXPORT_OK = qw(
--	nstore store_fd nstore_fd fd_retrieve
--	freeze nfreeze thaw
--	dclone
--	retrieve_fd
--	lock_store lock_nstore lock_retrieve
--        file_magic read_magic
--	BLESS_OK TIE_OK FLAGS_COMPAT
--        stack_depth stack_depth_hash
-+    nstore store_fd nstore_fd fd_retrieve
-+    freeze nfreeze thaw
-+    dclone
-+    retrieve_fd
-+    lock_store lock_nstore lock_retrieve
-+    file_magic read_magic
-+    BLESS_OK TIE_OK FLAGS_COMPAT
-+    stack_depth stack_depth_hash
- );
- 
- our ($canonical, $forgive_me);
- 
- BEGIN {
--  our $VERSION = '3.32';
-+    our $VERSION = '3.37';
- }
- 
- our $recursion_limit;
- our $recursion_limit_hash;
- 
- $recursion_limit = 512
--  unless defined $recursion_limit;
-+    unless defined $recursion_limit;
- $recursion_limit_hash = 256
--  unless defined $recursion_limit_hash;
-+    unless defined $recursion_limit_hash;
- 
- use Carp;
-+use Fcntl qw(LOCK_SH LOCK_EX);
- 
- BEGIN {
-     if (eval {
-@@ -76,21 +79,6 @@ BEGIN {
-     }
- }
- 
--#
--# They might miss :flock in Fcntl
--#
--
--BEGIN {
--    if (eval { require Fcntl; 1 } && exists $Fcntl::EXPORT_TAGS{'flock'}) {
--        Fcntl->import(':flock');
--    } else {
--        eval q{
--	          sub LOCK_SH () { 1 }
--		  sub LOCK_EX () { 2 }
--	      };
--    }
--}
--
- sub CLONE {
-     # clone context under threads
-     Storable::init_perinterp();
-@@ -102,9 +90,9 @@ sub FLAGS_COMPAT () { BLESS_OK | TIE_OK }
- 
- # By default restricted hashes are downgraded on earlier perls.
- 
--$Storable::flags = FLAGS_COMPAT;
--$Storable::downgrade_restricted = 1;
--$Storable::accept_future_minor = 1;
-+our $flags = FLAGS_COMPAT;
-+our $downgrade_restricted = 1;
-+our $accept_future_minor = 1;
- 
- BEGIN { XSLoader::load('Storable') };
- 
-@@ -119,27 +107,24 @@ sub show_file_magic {
- # the following lines need to be added to the local magic(5) file,
- # usually either /usr/share/misc/magic or /etc/magic.
- #
--0	string	perl-store	perl Storable(v0.6) data
-->4	byte	>0	(net-order %d)
-->>4	byte	&01	(network-ordered)
-->>4	byte	=3	(major 1)
-->>4	byte	=2	(major 1)
--
--0	string	pst0	perl Storable(v0.7) data
-->4	byte	>0
-->>4	byte	&01	(network-ordered)
-->>4	byte	=5	(major 2)
-->>4	byte	=4	(major 2)
-->>5	byte	>0	(minor %d)
-+0       string  perl-store      perl Storable(v0.6) data
-+>4      byte    >0              (net-order %d)
-+>>4     byte    &01             (network-ordered)
-+>>4     byte    =3              (major 1)
-+>>4     byte    =2              (major 1)
-+
-+0       string  pst0            perl Storable(v0.7) data
-+>4      byte    >0
-+>>4     byte    &01             (network-ordered)
-+>>4     byte    =5              (major 2)
-+>>4     byte    =4              (major 2)
-+>>5     byte    >0              (minor %d)
- EOM
- }
- 
- sub file_magic {
--    require IO::File;
--
-     my $file = shift;
--    my $fh = IO::File->new;
--    open($fh, "<", $file) || die "Can't open '$file': $!";
-+    open(my $fh, "<", $file) || die "Can't open '$file': $!";
-     binmode($fh);
-     defined(sysread($fh, my $buf, 32)) || die "Can't read from '$file': $!";
-     close($fh);
-@@ -156,53 +141,53 @@ sub read_magic {
-     my $buflen = length($buf);
-     my $magic;
-     if ($buf =~ s/^(pst0|perl-store)//) {
--	$magic = $1;
--	$info{file} = $file || 1;
-+        $magic = $1;
-+        $info{file} = $file || 1;
-     }
-     else {
--	return undef if $file;
--	$magic = "";
-+        return undef if $file;
-+        $magic = "";
-     }
- 
-     return undef unless length($buf);
- 
-     my $net_order;
-     if ($magic eq "perl-store" && ord(substr($buf, 0, 1)) > 1) {
--	$info{version} = -1;
--	$net_order = 0;
-+        $info{version} = -1;
-+        $net_order = 0;
-     }
-     else {
--	$buf =~ s/(.)//s;
--	my $major = (ord $1) >> 1;
--	return undef if $major > 4; # sanity (assuming we never go that high)
--	$info{major} = $major;
--	$net_order = (ord $1) & 0x01;
--	if ($major > 1) {
--	    return undef unless $buf =~ s/(.)//s;
--	    my $minor = ord $1;
--	    $info{minor} = $minor;
--	    $info{version} = "$major.$minor";
--	    $info{version_nv} = sprintf "%d.%03d", $major, $minor;
--	}
--	else {
--	    $info{version} = $major;
--	}
-+        $buf =~ s/(.)//s;
-+        my $major = (ord $1) >> 1;
-+        return undef if $major > 4; # sanity (assuming we never go that high)
-+        $info{major} = $major;
-+        $net_order = (ord $1) & 0x01;
-+        if ($major > 1) {
-+            return undef unless $buf =~ s/(.)//s;
-+            my $minor = ord $1;
-+            $info{minor} = $minor;
-+            $info{version} = "$major.$minor";
-+            $info{version_nv} = sprintf "%d.%03d", $major, $minor;
-+        }
-+        else {
-+            $info{version} = $major;
-+        }
-     }
-     $info{version_nv} ||= $info{version};
-     $info{netorder} = $net_order;
- 
-     unless ($net_order) {
--	return undef unless $buf =~ s/(.)//s;
--	my $len = ord $1;
--	return undef unless length($buf) >= $len;
--	return undef unless $len == 4 || $len == 8;  # sanity
--	@info{qw(byteorder intsize longsize ptrsize)}
--	    = unpack "a${len}CCC", $buf;
--	(substr $buf, 0, $len + 3) = '';
--	if ($info{version_nv} >= 2.002) {
--	    return undef unless $buf =~ s/(.)//s;
--	    $info{nvsize} = ord $1;
--	}
-+        return undef unless $buf =~ s/(.)//s;
-+        my $len = ord $1;
-+        return undef unless length($buf) >= $len;
-+        return undef unless $len == 4 || $len == 8;  # sanity
-+        @info{qw(byteorder intsize longsize ptrsize)}
-+            = unpack "a${len}CCC", $buf;
-+        (substr $buf, 0, $len + 3) = '';
-+        if ($info{version_nv} >= 2.002) {
-+            return undef unless $buf =~ s/(.)//s;
-+            $info{nvsize} = ord $1;
-+        }
-     }
-     $info{hdrsize} = $buflen - length($buf);
- 
-@@ -262,34 +247,34 @@ sub _store {
-     my $self = shift;
-     my ($file, $use_locking) = @_;
-     logcroak "not a reference" unless ref($self);
--    logcroak "wrong argument number" unless @_ == 2;	# No @foo in arglist
--    local *FILE;
-+    logcroak "wrong argument number" unless @_ == 2;    # No @foo in arglist
-+    my $FILE;
-     if ($use_locking) {
--        open(FILE, ">>", $file) || logcroak "can't write into $file: $!";
-+        open($FILE, ">>", $file) || logcroak "can't write into $file: $!";
-         unless (CAN_FLOCK) {
-             logcarp
--              "Storable::lock_store: fcntl/flock emulation broken on $^O";
-+                "Storable::lock_store: fcntl/flock emulation broken on $^O";
-             return undef;
-         }
--        flock(FILE, LOCK_EX) ||
--          logcroak "can't get exclusive lock on $file: $!";
--        truncate FILE, 0;
-+        flock($FILE, LOCK_EX) ||
-+            logcroak "can't get exclusive lock on $file: $!";
-+        truncate $FILE, 0;
-         # Unlocking will happen when FILE is closed
-     } else {
--        open(FILE, ">", $file) || logcroak "can't create $file: $!";
-+        open($FILE, ">", $file) || logcroak "can't create $file: $!";
-     }
--    binmode FILE;	# Archaic systems...
--    my $da = $@;	# Don't mess if called from exception handler
-+    binmode $FILE;   # Archaic systems...
-+    my $da = $@;    # Don't mess if called from exception handler
-     my $ret;
-     # Call C routine nstore or pstore, depending on network order
--    eval { $ret = &$xsptr(*FILE, $self) };
-+    eval { $ret = &$xsptr($FILE, $self) };
-     # close will return true on success, so the or short-circuits, the ()
-     # expression is true, and for that case the block will only be entered
-     # if $@ is true (ie eval failed)
-     # if close fails, it returns false, $ret is altered, *that* is (also)
-     # false, so the () expression is false, !() is true, and the block is
-     # entered.
--    if (!(close(FILE) or undef $ret) || $@) {
-+    if (!(close($FILE) or undef $ret) || $@) {
-         unlink($file) or warn "Can't unlink $file: $!\n";
-     }
-     if ($@) {
-@@ -326,15 +311,20 @@ sub _store_fd {
-     my $self = shift;
-     my ($file) = @_;
-     logcroak "not a reference" unless ref($self);
--    logcroak "too many arguments" unless @_ == 1;	# No @foo in arglist
-+    logcroak "too many arguments" unless @_ == 1;       # No @foo in arglist
-     my $fd = fileno($file);
-     logcroak "not a valid file descriptor" unless defined $fd;
--    my $da = $@;		# Don't mess if called from exception handler
-+    $file = do {
-+        no strict 'refs';
-+        \*{ $file };
-+    };
-+    my $da = $@;                # Don't mess if called from exception handler
-     my $ret;
-     # Call C routine nstore or pstore, depending on network order
-     eval { $ret = &$xsptr($file, $self) };
-     logcroak $@ if $@ =~ s/\.?\n$/,/;
--    local $\; print $file '';	# Autoflush the file if wanted
-+    local $\;
-+    print $file '';       # Autoflush the file if wanted
-     $@ = $da;
-     return $ret;
- }
-@@ -363,8 +353,8 @@ sub _freeze {
-     my $xsptr = shift;
-     my $self = shift;
-     logcroak "not a reference" unless ref($self);
--    logcroak "too many arguments" unless @_ == 0;	# No @foo in arglist
--    my $da = $@;	        # Don't mess if called from exception handler
-+    logcroak "too many arguments" unless @_ == 0;     # No @foo in arglist
-+    my $da = $@;                # Don't mess if called from exception handler
-     my $ret;
-     # Call C routine mstore or net_mstore, depending on network order
-     eval { $ret = &$xsptr($self) };
-@@ -406,19 +396,19 @@ sub _retrieve {
-     $flags = $Storable::flags unless defined $flags;
-     my $FILE;
-     open($FILE, "<", $file) || logcroak "can't open $file: $!";
--    binmode $FILE;			# Archaic systems...
-+    binmode $FILE;                      # Archaic systems...
-     my $self;
--    my $da = $@;			# Could be from exception handler
-+    my $da = $@;                        # Could be from exception handler
-     if ($use_locking) {
-         unless (CAN_FLOCK) {
-             logcarp
--              "Storable::lock_store: fcntl/flock emulation broken on $^O";
-+                "Storable::lock_store: fcntl/flock emulation broken on $^O";
-             return undef;
-         }
-         flock($FILE, LOCK_SH) || logcroak "can't get shared lock on $file: $!";
-         # Unlocking will happen when FILE is closed
-     }
--    eval { $self = pretrieve($FILE, $flags) };		# Call C routine
-+    eval { $self = pretrieve($FILE, $flags) };          # Call C routine
-     close($FILE);
-     if ($@) {
-         $@ =~ s/\.?\n$/,/ unless ref $@;
-@@ -439,8 +429,8 @@ sub fd_retrieve {
-     my $fd = fileno($file);
-     logcroak "not a valid file descriptor" unless defined $fd;
-     my $self;
--    my $da = $@;				# Could be from exception handler
--    eval { $self = pretrieve($file, $flags) };	# Call C routine
-+    my $da = $@;                                # Could be from exception handler
-+    eval { $self = pretrieve($file, $flags) };  # Call C routine
-     if ($@) {
-         $@ =~ s/\.?\n$/,/ unless ref $@;
-         logcroak $@;
-@@ -449,7 +439,7 @@ sub fd_retrieve {
-     return $self;
- }
- 
--sub retrieve_fd { &fd_retrieve }		# Backward compatibility
-+sub retrieve_fd { &fd_retrieve }                # Backward compatibility
- 
- #
- # thaw
-@@ -467,8 +457,8 @@ sub thaw {
-     $flags = $Storable::flags unless defined $flags;
-     return undef unless defined $frozen;
-     my $self;
--    my $da = $@;			        # Could be from exception handler
--    eval { $self = mretrieve($frozen, $flags) };# Call C routine
-+    my $da = $@;                                    # Could be from exception handler
-+    eval { $self = mretrieve($frozen, $flags) };    # Call C routine
-     if ($@) {
-         $@ =~ s/\.?\n$/,/ unless ref $@;
-         logcroak $@;
-@@ -521,7 +511,7 @@ sub _regexp_pattern {
- }
- 1
- EOS
--      or die "Cannot define _regexp_pattern: $@";
-+        or die "Cannot define _regexp_pattern: $@";
- }
- 
- 1;
-@@ -533,34 +523,34 @@ Storable - persistence for Perl data structures
- 
- =head1 SYNOPSIS
- 
-- use Storable;
-- store \%table, 'file';
-- $hashref = retrieve('file');
-+    use Storable;
-+    store \%table, 'file';
-+    $hashref = retrieve('file');
- 
-- use Storable qw(nstore store_fd nstore_fd freeze thaw dclone);
-+    use Storable qw(nstore store_fd nstore_fd freeze thaw dclone);
- 
-- # Network order
-- nstore \%table, 'file';
-- $hashref = retrieve('file');	# There is NO nretrieve()
-+    # Network order
-+    nstore \%table, 'file';
-+    $hashref = retrieve('file');        # There is NO nretrieve()
- 
-- # Storing to and retrieving from an already opened file
-- store_fd \@array, \*STDOUT;
-- nstore_fd \%table, \*STDOUT;
-- $aryref = fd_retrieve(\*SOCKET);
-- $hashref = fd_retrieve(\*SOCKET);
-+    # Storing to and retrieving from an already opened file
-+    store_fd \@array, \*STDOUT;
-+    nstore_fd \%table, \*STDOUT;
-+    $aryref = fd_retrieve(\*SOCKET);
-+    $hashref = fd_retrieve(\*SOCKET);
- 
-- # Serializing to memory
-- $serialized = freeze \%table;
-- %table_clone = %{ thaw($serialized) };
-+    # Serializing to memory
-+    $serialized = freeze \%table;
-+    %table_clone = %{ thaw($serialized) };
- 
-- # Deep (recursive) cloning
-- $cloneref = dclone($ref);
-+    # Deep (recursive) cloning
-+    $cloneref = dclone($ref);
- 
-- # Advisory locking
-- use Storable qw(lock_store lock_nstore lock_retrieve)
-- lock_store \%table, 'file';
-- lock_nstore \%table, 'file';
-- $hashref = lock_retrieve('file');
-+    # Advisory locking
-+    use Storable qw(lock_store lock_nstore lock_retrieve)
-+    lock_store \%table, 'file';
-+    lock_nstore \%table, 'file';
-+    $hashref = lock_retrieve('file');
- 
- =head1 DESCRIPTION
- 
-@@ -593,8 +583,8 @@ so you will have to do that explicitly if you need those routines.
- The file descriptor you supply must be already opened, for read
- if you're going to retrieve and for write if you wish to store.
- 
--	store_fd(\%table, *STDOUT) || die "can't store to stdout\n";
--	$hashref = fd_retrieve(*STDIN);
-+    store_fd(\%table, *STDOUT) || die "can't store to stdout\n";
-+    $hashref = fd_retrieve(*STDIN);
- 
- You can also store data in network order to allow easy sharing across
- multiple platforms, or when storing on a socket known to be remotely
-@@ -1018,7 +1008,7 @@ stay shared.
- 
- In the above [A, C] example, the C<STORABLE_freeze> hook could return:
- 
--	("something", $self->{B})
-+    ("something", $self->{B})
- 
- and the B part would be serialized by the engine.  In C<STORABLE_thaw>, you
- would get back the reference to the B' object, deserialized for you.
-@@ -1152,48 +1142,48 @@ such.
- 
- Here are some code samples showing a possible usage of Storable:
- 
-- use Storable qw(store retrieve freeze thaw dclone);
-+    use Storable qw(store retrieve freeze thaw dclone);
- 
-- %color = ('Blue' => 0.1, 'Red' => 0.8, 'Black' => 0, 'White' => 1);
-+    %color = ('Blue' => 0.1, 'Red' => 0.8, 'Black' => 0, 'White' => 1);
- 
-- store(\%color, 'mycolors') or die "Can't store %a in mycolors!\n";
-+    store(\%color, 'mycolors') or die "Can't store %a in mycolors!\n";
- 
-- $colref = retrieve('mycolors');
-- die "Unable to retrieve from mycolors!\n" unless defined $colref;
-- printf "Blue is still %lf\n", $colref->{'Blue'};
-+    $colref = retrieve('mycolors');
-+    die "Unable to retrieve from mycolors!\n" unless defined $colref;
-+    printf "Blue is still %lf\n", $colref->{'Blue'};
- 
-- $colref2 = dclone(\%color);
-+    $colref2 = dclone(\%color);
- 
-- $str = freeze(\%color);
-- printf "Serialization of %%color is %d bytes long.\n", length($str);
-- $colref3 = thaw($str);
-+    $str = freeze(\%color);
-+    printf "Serialization of %%color is %d bytes long.\n", length($str);
-+    $colref3 = thaw($str);
- 
- which prints (on my machine):
- 
-- Blue is still 0.100000
-- Serialization of %color is 102 bytes long.
-+    Blue is still 0.100000
-+    Serialization of %color is 102 bytes long.
- 
- Serialization of CODE references and deserialization in a safe
- compartment:
- 
- =for example begin
- 
-- use Storable qw(freeze thaw);
-- use Safe;
-- use strict;
-- my $safe = new Safe;
--        # because of opcodes used in "use strict":
-- $safe->permit(qw(:default require));
-- local $Storable::Deparse = 1;
-- local $Storable::Eval = sub { $safe->reval($_[0]) };
-- my $serialized = freeze(sub { 42 });
-- my $code = thaw($serialized);
-- $code->() == 42;
-+    use Storable qw(freeze thaw);
-+    use Safe;
-+    use strict;
-+    my $safe = Safe->new;
-+            # because of opcodes used in "use strict":
-+    $safe->permit(qw(:default require));
-+    local $Storable::Deparse = 1;
-+    local $Storable::Eval = sub { $safe->reval($_[0]) };
-+    my $serialized = freeze(sub { 42 });
-+    my $code = thaw($serialized);
-+    $code->() == 42;
- 
- =for example end
- 
- =for example_testing
--        is( $code->(), 42 );
-+    is( $code->(), 42 );
- 
- =head1 SECURITY WARNING
- 
-@@ -1400,23 +1390,23 @@ reading them.
- 
- Thank you to (in chronological order):
- 
--	Jarkko Hietaniemi <jhi@iki.fi>
--	Ulrich Pfeifer <pfeifer@charly.informatik.uni-dortmund.de>
--	Benjamin A. Holzman <bholzman@earthlink.net>
--	Andrew Ford <A.Ford@ford-mason.co.uk>
--	Gisle Aas <gisle@aas.no>
--	Jeff Gresham <gresham_jeffrey@jpmorgan.com>
--	Murray Nesbitt <murray@activestate.com>
--	Marc Lehmann <pcg@opengroup.org>
--	Justin Banks <justinb@wamnet.com>
--	Jarkko Hietaniemi <jhi@iki.fi> (AGAIN, as perl 5.7.0 Pumpkin!)
--	Salvador Ortiz Garcia <sog@msg.com.mx>
--	Dominic Dunlop <domo@computer.org>
--	Erik Haugan <erik@solbors.no>
--	Benjamin A. Holzman <ben.holzman@grantstreet.com>
--	Reini Urban <rurban@cpan.org>
--	Todd Rinaldo <toddr@cpanel.net>
--	Aaron Crane <arc@cpan.org>
-+    Jarkko Hietaniemi <jhi@iki.fi>
-+    Ulrich Pfeifer <pfeifer@charly.informatik.uni-dortmund.de>
-+    Benjamin A. Holzman <bholzman@earthlink.net>
-+    Andrew Ford <A.Ford@ford-mason.co.uk>
-+    Gisle Aas <gisle@aas.no>
-+    Jeff Gresham <gresham_jeffrey@jpmorgan.com>
-+    Murray Nesbitt <murray@activestate.com>
-+    Marc Lehmann <pcg@opengroup.org>
-+    Justin Banks <justinb@wamnet.com>
-+    Jarkko Hietaniemi <jhi@iki.fi> (AGAIN, as perl 5.7.0 Pumpkin!)
-+    Salvador Ortiz Garcia <sog@msg.com.mx>
-+    Dominic Dunlop <domo@computer.org>
-+    Erik Haugan <erik@solbors.no>
-+    Benjamin A. Holzman <ben.holzman@grantstreet.com>
-+    Reini Urban <rurban@cpan.org>
-+    Todd Rinaldo <toddr@cpanel.net>
-+    Aaron Crane <arc@cpan.org>
- 
- for their bug reports, suggestions and contributions.
- 
-diff --git a/stacksize b/stacksize
-index 2896684..90739d4 100644
---- a/stacksize
-+++ b/stacksize
-@@ -48,9 +48,9 @@ if ($^O eq "MSWin32") {
-     require Win32;
-     my ($str, $major, $minor) = Win32::GetOSVersion();
-     if ($major < 6 || $major == 6 && $minor < 1) {
--	print "# Using defaults for older Win32\n";
--	write_limits(500, 256);
--	exit;
-+        print "# Using defaults for older Win32\n";
-+        write_limits(500, 256);
-+        exit;
-     }
- }
- my ($n, $good, $bad, $found) =
-diff --git a/t/CVE-2015-1592.t b/t/CVE-2015-1592.t
-index a71f44c..c6cdeaf 100644
---- a/t/CVE-2015-1592.t
-+++ b/t/CVE-2015-1592.t
-@@ -1,7 +1,8 @@
--#!/usr/bin/perl
-+#!./perl
- 
- use strict;
- use warnings;
-+
- use Test::More;
- use Storable qw(freeze thaw);
- plan tests => 1;
-@@ -17,5 +18,5 @@ my $frozen = freeze($x);
-     local $SIG{__WARN__} = sub { $warnings .= "@_" };
-     thaw($frozen);
-     like($warnings, qr/SECURITY: Movable-Type CVE-2015-1592 Storable metasploit attack/,
--         'Detect CVE-2015-1592');
-+        'Detect CVE-2015-1592');
- }
-diff --git a/t/HAS_ATTACH.pm b/t/HAS_ATTACH.pm
-deleted file mode 100644
-index 72855aa..0000000
---- a/t/HAS_ATTACH.pm
-+++ /dev/null
-@@ -1,10 +0,0 @@
--package HAS_ATTACH;
--
--sub STORABLE_attach {
--  ++$attached_count;
--  return bless [], 'HAS_ATTACH';
--}
--
--++$loaded_count;
--
--1;
-diff --git a/t/HAS_HOOK.pm b/t/HAS_HOOK.pm
-deleted file mode 100644
-index 979a6a2..0000000
---- a/t/HAS_HOOK.pm
-+++ /dev/null
-@@ -1,9 +0,0 @@
--package HAS_HOOK;
--
--sub STORABLE_thaw {
--  ++$thawed_count;
--}
--
--++$loaded_count;
--
--1;
-diff --git a/t/HAS_OVERLOAD.pm b/t/HAS_OVERLOAD.pm
-deleted file mode 100644
-index 8a622a4..0000000
---- a/t/HAS_OVERLOAD.pm
-+++ /dev/null
-@@ -1,14 +0,0 @@
--package HAS_OVERLOAD;
--
--use overload
--	'""'	=> sub { ${$_[0]} }, fallback => 1;
--
--sub make {
--  my $package = shift;
--  my $value = shift;
--  bless \$value, $package;
--}
--
--++$loaded_count;
--
--1;
-diff --git a/t/attach.t b/t/attach.t
-index 5ffdae5..5aae156 100644
---- a/t/attach.t
-+++ b/t/attach.t
-@@ -2,41 +2,34 @@
- #
- # This file tests that Storable correctly uses STORABLE_attach hooks
- 
--sub BEGIN {
--	unshift @INC, 't';
--	unshift @INC, 't/compat' if $] < 5.006002;
--	require Config; import Config;
--	if ($ENV{PERL_CORE} and $Config{'extensions'} !~ /\bStorable\b/) {
--		print "1..0 # Skip: Storable was not built\n";
--		exit 0;
--	}
--}
-+use strict;
-+use warnings;
- 
- use Test::More tests => 3;
- use Storable ();
- 
- {
--	my $destruct_cnt = 0;
--	my $obj = bless {data => 'ok'}, 'My::WithDestructor';
--	my $target = Storable::thaw( Storable::freeze( $obj ) );
--	is( $target->{data}, 'ok', 'We got correct object after freeze/thaw' );
--	is( $destruct_cnt, 0, 'No tmp objects created by Storable' );
--	undef $obj;
--	undef $target;
--	is( $destruct_cnt, 2, 'Only right objects destroyed at the end' );
--
--	package My::WithDestructor;
--
--	sub STORABLE_freeze {
--		my ($self, $clone) = @_;
--		return $self->{data};
--	}
--
--	sub STORABLE_attach {
--		my ($class, $clone, $string) = @_;
--		return bless {data => $string}, 'My::WithDestructor';
--	}
--
--	sub DESTROY { $destruct_cnt++; }
-+    my $destruct_cnt = 0;
-+    my $obj = bless {data => 'ok'}, 'My::WithDestructor';
-+    my $target = Storable::thaw( Storable::freeze( $obj ) );
-+    is( $target->{data}, 'ok', 'We got correct object after freeze/thaw' );
-+    is( $destruct_cnt, 0, 'No tmp objects created by Storable' );
-+    undef $obj;
-+    undef $target;
-+    is( $destruct_cnt, 2, 'Only right objects destroyed at the end' );
-+
-+    package My::WithDestructor;
-+
-+    sub STORABLE_freeze {
-+        my ($self, $clone) = @_;
-+        return $self->{data};
-+    }
-+
-+    sub STORABLE_attach {
-+        my ($class, $clone, $string) = @_;
-+        return bless {data => $string}, 'My::WithDestructor';
-+    }
-+
-+    sub DESTROY { $destruct_cnt++; }
- }
- 
-diff --git a/t/attach_errors.t b/t/attach_errors.t
-index e2be39d..d99366c 100644
---- a/t/attach_errors.t
-+++ b/t/attach_errors.t
-@@ -12,22 +12,15 @@
- # This file tests several known-error cases relating to STORABLE_attach, in
- # which Storable should (correctly) throw errors.
- 
--sub BEGIN {
--    unshift @INC, 't';
--    unshift @INC, 't/compat' if $] < 5.006002;
--    require Config; import Config;
--    if ($ENV{PERL_CORE} and $Config{'extensions'} !~ /\bStorable\b/) {
--        print "1..0 # Skip: Storable was not built\n";
--        exit 0;
--    }
--}
-+use strict;
-+use warnings;
- 
- use Test::More tests => 40;
- use Storable ();
- 
- #####################################################################
- # Error 1
--# 
-+#
- # Classes that implement STORABLE_thaw _cannot_ have references
- # returned by their STORABLE_freeze method. When they do, Storable
- # should throw an exception
-@@ -36,54 +29,54 @@ use Storable ();
- 
- # Good Case - should not die
- {
--	my $goodfreeze = bless {}, 'My::GoodFreeze';
--	my $frozen = undef;
--	eval {
--		$frozen = Storable::freeze( $goodfreeze );
--	};
--	ok( ! $@, 'Storable does not die when STORABLE_freeze does not return references' );
--	ok( $frozen, 'Storable freezes to a string successfully' );
--
--	package My::GoodFreeze;
--
--	sub STORABLE_freeze {
--		my ($self, $clone) = @_;
--		
--		# Illegally include a reference in this return
--		return ('');
--	}
--
--	sub STORABLE_attach {
--		my ($class, $clone, $string) = @_;
--		return bless { }, 'My::GoodFreeze';
--	}
-+    my $goodfreeze = bless {}, 'My::GoodFreeze';
-+    my $frozen = undef;
-+    eval {
-+        $frozen = Storable::freeze( $goodfreeze );
-+    };
-+    ok( ! $@, 'Storable does not die when STORABLE_freeze does not return references' );
-+    ok( $frozen, 'Storable freezes to a string successfully' );
-+
-+    package My::GoodFreeze;
-+
-+    sub STORABLE_freeze {
-+        my ($self, $clone) = @_;
-+
-+        # Illegally include a reference in this return
-+        return ('');
-+    }
-+
-+    sub STORABLE_attach {
-+        my ($class, $clone, $string) = @_;
-+        return bless { }, 'My::GoodFreeze';
-+    }
- }
- 
- 
- 
- # Error Case - should die on freeze
- {
--	my $badfreeze = bless {}, 'My::BadFreeze';
--	eval {
--		Storable::freeze( $badfreeze );
--	};
--	ok( $@, 'Storable dies correctly when STORABLE_freeze returns a reference' );
--	# Check for a unique substring of the error message
--	ok( $@ =~ /cannot return references/, 'Storable dies with the expected error' );
--
--	package My::BadFreeze;
--
--	sub STORABLE_freeze {
--		my ($self, $clone) = @_;
--		
--		# Illegally include a reference in this return
--		return ('', []);
--	}
--
--	sub STORABLE_attach {
--		my ($class, $clone, $string) = @_;
--		return bless { }, 'My::BadFreeze';
--	}
-+    my $badfreeze = bless {}, 'My::BadFreeze';
-+    eval {
-+        Storable::freeze( $badfreeze );
-+    };
-+    ok( $@, 'Storable dies correctly when STORABLE_freeze returns a reference' );
-+    # Check for a unique substring of the error message
-+    ok( $@ =~ /cannot return references/, 'Storable dies with the expected error' );
-+
-+    package My::BadFreeze;
-+
-+    sub STORABLE_freeze {
-+        my ($self, $clone) = @_;
-+
-+        # Illegally include a reference in this return
-+        return ('', []);
-+    }
-+
-+    sub STORABLE_attach {
-+        my ($class, $clone, $string) = @_;
-+        return bless { }, 'My::BadFreeze';
-+    }
- }
- 
- 
-@@ -100,73 +93,73 @@ use Storable ();
- 
- # Good Case - should not die
- {
--	my $goodthaw = bless {}, 'My::GoodThaw';
--	my $frozen = undef;
--	eval {
--		$frozen = Storable::freeze( $goodthaw );
--	};
--	ok( $frozen, 'Storable freezes to a string as expected' );
--	my $thawed = eval {
--		Storable::thaw( $frozen );
--	};
--	isa_ok( $thawed, 'My::GoodThaw' );
--	is( $thawed->{foo}, 'bar', 'My::GoodThaw thawed correctly as expected' );
--
--	package My::GoodThaw;
--
--	sub STORABLE_freeze {
--		my ($self, $clone) = @_;
--
--		return ('');
--	}
--
--	sub STORABLE_attach {
--		my ($class, $clone, $string) = @_;
--		return bless { 'foo' => 'bar' }, 'My::GoodThaw';
--	}
-+    my $goodthaw = bless {}, 'My::GoodThaw';
-+    my $frozen = undef;
-+    eval {
-+        $frozen = Storable::freeze( $goodthaw );
-+    };
-+    ok( $frozen, 'Storable freezes to a string as expected' );
-+    my $thawed = eval {
-+        Storable::thaw( $frozen );
-+    };
-+    isa_ok( $thawed, 'My::GoodThaw' );
-+    is( $thawed->{foo}, 'bar', 'My::GoodThaw thawed correctly as expected' );
-+
-+    package My::GoodThaw;
-+
-+    sub STORABLE_freeze {
-+        my ($self, $clone) = @_;
-+
-+        return ('');
-+    }
-+
-+    sub STORABLE_attach {
-+        my ($class, $clone, $string) = @_;
-+        return bless { 'foo' => 'bar' }, 'My::GoodThaw';
-+    }
- }
- 
- 
- 
- # Bad Case - should die on thaw
- {
--	# Create the frozen string normally
--	my $badthaw = bless { }, 'My::BadThaw';
--	my $frozen = undef;
--	eval {
--		$frozen = Storable::freeze( $badthaw );
--	};
--	ok( $frozen, 'BadThaw was frozen with references correctly' );
--
--	# Set up the error condition by deleting the normal STORABLE_thaw,
--	# and creating a STORABLE_attach.
--	*My::BadThaw::STORABLE_attach = *My::BadThaw::STORABLE_thaw;
--	*My::BadThaw::STORABLE_attach = *My::BadThaw::STORABLE_thaw; # Suppress a warning
--	delete ${'My::BadThaw::'}{STORABLE_thaw};
--
--	# Trigger the error condition
--	my $thawed = undef;
--	eval {
--		$thawed = Storable::thaw( $frozen );
--	};
--	ok( $@, 'My::BadThaw object dies when thawing as expected' );
--	# Check for a snippet from the error message
--	ok( $@ =~ /unexpected references/, 'Dies with the expected error message' );
--
--	package My::BadThaw;
--
--	sub STORABLE_freeze {
--		my ($self, $clone) = @_;
--
--		return ('', []);
--	}
--
--	# Start with no STORABLE_attach method so we can get a
--	# frozen object-containing-a-reference into the freeze string.
--	sub STORABLE_thaw {
--		my ($class, $clone, $string) = @_;
--		return bless { 'foo' => 'bar' }, 'My::BadThaw';
--	}
-+    # Create the frozen string normally
-+    my $badthaw = bless { }, 'My::BadThaw';
-+    my $frozen = undef;
-+    eval {
-+        $frozen = Storable::freeze( $badthaw );
-+    };
-+    ok( $frozen, 'BadThaw was frozen with references correctly' );
-+
-+    # Set up the error condition by deleting the normal STORABLE_thaw,
-+    # and creating a STORABLE_attach.
-+    *My::BadThaw::STORABLE_attach = *My::BadThaw::STORABLE_thaw;
-+    *My::BadThaw::STORABLE_attach = *My::BadThaw::STORABLE_thaw; # Suppress a warning
-+    delete $My::BadThaw::{STORABLE_thaw};
-+
-+    # Trigger the error condition
-+    my $thawed = undef;
-+    eval {
-+            $thawed = Storable::thaw( $frozen );
-+    };
-+    ok( $@, 'My::BadThaw object dies when thawing as expected' );
-+    # Check for a snippet from the error message
-+    ok( $@ =~ /unexpected references/, 'Dies with the expected error message' );
-+
-+    package My::BadThaw;
-+
-+    sub STORABLE_freeze {
-+        my ($self, $clone) = @_;
-+
-+        return ('', []);
-+    }
-+
-+    # Start with no STORABLE_attach method so we can get a
-+    # frozen object-containing-a-reference into the freeze string.
-+    sub STORABLE_thaw {
-+        my ($class, $clone, $string) = @_;
-+        return bless { 'foo' => 'bar' }, 'My::BadThaw';
-+    }
- }
- 
- 
-@@ -181,56 +174,56 @@ use Storable ();
- 
- # Good Case - should not die
- {
--	my $goodattach = bless { }, 'My::GoodAttach';
--	my $frozen = Storable::freeze( $goodattach );
--	ok( $frozen, 'My::GoodAttach return as expected' );
--	my $thawed = eval {
--		Storable::thaw( $frozen );
--	};
--	isa_ok( $thawed, 'My::GoodAttach' );
--	is( ref($thawed), 'My::GoodAttach::Subclass',
--		'The slightly-tricky good "returns a subclass" case returns as expected' );
--
--	package My::GoodAttach;
--
--	sub STORABLE_freeze {
--		my ($self, $cloning) = @_;
--		return ('');
--	}
--
--	sub STORABLE_attach {
--		my ($class, $cloning, $string) = @_;
--
--		return bless { }, 'My::GoodAttach::Subclass';
--	}
--
--	package My::GoodAttach::Subclass;
--
--	BEGIN {
--		@ISA = 'My::GoodAttach';
--	}
-+    my $goodattach = bless { }, 'My::GoodAttach';
-+    my $frozen = Storable::freeze( $goodattach );
-+    ok( $frozen, 'My::GoodAttach return as expected' );
-+    my $thawed = eval {
-+        Storable::thaw( $frozen );
-+    };
-+    isa_ok( $thawed, 'My::GoodAttach' );
-+    is( ref($thawed), 'My::GoodAttach::Subclass',
-+        'The slightly-tricky good "returns a subclass" case returns as expected' );
-+
-+    package My::GoodAttach;
-+
-+    sub STORABLE_freeze {
-+        my ($self, $cloning) = @_;
-+        return ('');
-+    }
-+
-+    sub STORABLE_attach {
-+        my ($class, $cloning, $string) = @_;
-+
-+        return bless { }, 'My::GoodAttach::Subclass';
-+    }
-+
-+    package My::GoodAttach::Subclass;
-+
-+    BEGIN {
-+        our @ISA = 'My::GoodAttach';
-+    }
- }
- 
- # Good case - multiple references to the same object should be attached properly
- {
--	my $obj = bless { id => 111 }, 'My::GoodAttach::MultipleReferences';
-+    my $obj = bless { id => 111 }, 'My::GoodAttach::MultipleReferences';
-     my $arr = [$obj];
- 
-     push @$arr, $obj;
- 
--	my $frozen = Storable::freeze($arr);
-+    my $frozen = Storable::freeze($arr);
- 
--	ok( $frozen, 'My::GoodAttach return as expected' );
-+    ok( $frozen, 'My::GoodAttach return as expected' );
- 
--	my $thawed = eval {
--		Storable::thaw( $frozen );
--	};
-+    my $thawed = eval {
-+            Storable::thaw( $frozen );
-+    };
- 
--	isa_ok( $thawed->[0], 'My::GoodAttach::MultipleReferences' );
--	isa_ok( $thawed->[1], 'My::GoodAttach::MultipleReferences' );
-+    isa_ok( $thawed->[0], 'My::GoodAttach::MultipleReferences' );
-+    isa_ok( $thawed->[1], 'My::GoodAttach::MultipleReferences' );
- 
--	is($thawed->[0], $thawed->[1], 'References to the same object are attached properly');
--	is($thawed->[1]{id}, $obj->{id}, 'Object with multiple references attached properly');
-+    is($thawed->[0], $thawed->[1], 'References to the same object are attached properly');
-+    is($thawed->[1]{id}, $obj->{id}, 'Object with multiple references attached properly');
- 
-     package My::GoodAttach::MultipleReferences;
- 
-@@ -250,47 +243,47 @@ use Storable ();
- 
- # Bad Cases - die on thaw
- {
--	my $returnvalue = undef;
--
--	# Create and freeze the object
--	my $badattach = bless { }, 'My::BadAttach';
--	my $frozen = Storable::freeze( $badattach );
--	ok( $frozen, 'BadAttach freezes as expected' );
--
--	# Try a number of different return values, all of which
--	# should cause Storable to die.
--	my @badthings = (
--		undef,
--		'',
--		1,
--		[],
--		{},
--		\"foo",
--		(bless { }, 'Foo'),
--		);
--	foreach ( @badthings ) {
--		$returnvalue = $_;
--
--		my $thawed = undef;
--		eval {
--			$thawed = Storable::thaw( $frozen );
--		};
--		ok( $@, 'BadAttach dies on thaw' );
--		ok( $@ =~ /STORABLE_attach did not return a My::BadAttach object/,
--			'BadAttach dies on thaw with the expected error message' );
--		is( $thawed, undef, 'Double checking $thawed was not set' );
--	}
--	
--	package My::BadAttach;
--
--	sub STORABLE_freeze {
--		my ($self, $cloning) = @_;
--		return ('');
--	}
--
--	sub STORABLE_attach {
--		my ($class, $cloning, $string) = @_;
--
--		return $returnvalue;
--	}
-+    my $returnvalue = undef;
-+
-+    # Create and freeze the object
-+    my $badattach = bless { }, 'My::BadAttach';
-+    my $frozen = Storable::freeze( $badattach );
-+    ok( $frozen, 'BadAttach freezes as expected' );
-+
-+    # Try a number of different return values, all of which
-+    # should cause Storable to die.
-+    my @badthings = (
-+        undef,
-+        '',
-+        1,
-+        [],
-+        {},
-+        \"foo",
-+        (bless { }, 'Foo'),
-+    );
-+    foreach ( @badthings ) {
-+        $returnvalue = $_;
-+
-+        my $thawed = undef;
-+        eval {
-+            $thawed = Storable::thaw( $frozen );
-+        };
-+        ok( $@, 'BadAttach dies on thaw' );
-+        ok( $@ =~ /STORABLE_attach did not return a My::BadAttach object/,
-+            'BadAttach dies on thaw with the expected error message' );
-+        is( $thawed, undef, 'Double checking $thawed was not set' );
-+    }
-+
-+    package My::BadAttach;
-+
-+    sub STORABLE_freeze {
-+        my ($self, $cloning) = @_;
-+        return ('');
-+    }
-+
-+    sub STORABLE_attach {
-+        my ($class, $cloning, $string) = @_;
-+
-+        return $returnvalue;
-+    }
- }
-diff --git a/t/attach_singleton.t b/t/attach_singleton.t
-index c555c5c..ca8833a 100644
---- a/t/attach_singleton.t
-+++ b/t/attach_singleton.t
-@@ -9,15 +9,8 @@
- # Tests freezing/thawing structures containing Singleton objects,
- # which should see both structs pointing to the same object.
- 
--sub BEGIN {
--    unshift @INC, 't';
--    unshift @INC, 't/compat' if $] < 5.006002;
--    require Config; import Config;
--    if ($ENV{PERL_CORE} and $Config{'extensions'} !~ /\bStorable\b/) {
--        print "1..0 # Skip: Storable was not built\n";
--        exit 0;
--    }
--}
-+use strict;
-+use warnings;
- 
- use Test::More tests => 16;
- use Storable ();
-@@ -66,25 +59,25 @@ package My::Singleton;
- my $SINGLETON = undef;
- 
- sub new {
--	$SINGLETON or
--	$SINGLETON = bless { value => 'Hello World!' }, $_[0];
-+    $SINGLETON or
-+    $SINGLETON = bless { value => 'Hello World!' }, $_[0];
- }
- 
- sub STORABLE_freeze {
--	my $self = shift;
-+    my $self = shift;
- 
--	# We don't actually need to return anything, but provide a null string
--	# to avoid the null-list-return behaviour.
--	return ('foo');
-+    # We don't actually need to return anything, but provide a null string
-+    # to avoid the null-list-return behaviour.
-+    return ('foo');
- }
- 
- sub STORABLE_attach {
--	my ($class, $clone, $string) = @_;
--	Test::More::ok( ! ref $class, 'STORABLE_attach passed class, and not an object' );
--	Test::More::is( $class, 'My::Singleton', 'STORABLE_attach is passed the correct class name' );
--	Test::More::is( $clone, 0, 'We are not in a dclone' );
--	Test::More::is( $string, 'foo', 'STORABLE_attach gets the string back' );
--
--	# Get the Singleton object and return it
--	return $class->new;
-+    my ($class, $clone, $string) = @_;
-+    Test::More::ok( ! ref $class, 'STORABLE_attach passed class, and not an object' );
-+    Test::More::is( $class, 'My::Singleton', 'STORABLE_attach is passed the correct class name' );
-+    Test::More::is( $clone, 0, 'We are not in a dclone' );
-+    Test::More::is( $string, 'foo', 'STORABLE_attach gets the string back' );
-+
-+    # Get the Singleton object and return it
-+    return $class->new;
- }
-diff --git a/t/blessed.t b/t/blessed.t
-index dea569b..3930040 100644
---- a/t/blessed.t
-+++ b/t/blessed.t
-@@ -1,51 +1,48 @@
- #!./perl
- #
- #  Copyright (c) 1995-2000, Raphael Manfredi
--#  
-+#
- #  You may redistribute only under the same terms as Perl 5, as specified
- #  in the README file that comes with the distribution.
- #
- 
-+my %immortals;
-+
- BEGIN {
-     # Do this as the very first thing, in order to avoid problems with the
-     # PADTMP flag on pre-5.19.3 threaded Perls.  On those Perls, compiling
-     # code that contains a constant-folded canonical truth value breaks
-     # the ability to take a reference to that canonical truth value later.
--    $::false = 0;
--    %::immortals = (
--	'u' => \undef,
--	'y' => \!$::false,
--	'n' => \!!$::false,
-+    my $false = 0;
-+    %immortals = (
-+        'u' => \undef,
-+        'y' => \!$false,
-+        'n' => \!!$false,
-     );
- }
- 
--sub BEGIN {
--    if ($ENV{PERL_CORE}) {
--        chdir 'dist/Storable' if -d 'dist/Storable';
--        @INC = ('../../lib', 't');
--    } else {
--        unshift @INC, 't';
--        unshift @INC, 't/compat' if $] < 5.006002;
--    }
--    require Config; import Config;
--    if ($ENV{PERL_CORE} and $Config{'extensions'} !~ /\bStorable\b/) {
--        print "1..0 # Skip: Storable was not built\n";
--        exit 0;
--    }
-+use strict;
-+use warnings;
-+
-+BEGIN {
-+    unshift @INC, 't/lib';
- }
- 
-+use Config;
- use Test::More;
-+use STTestLib qw(tempfilename);
- 
- use Storable qw(freeze thaw store retrieve fd_retrieve);
- 
--%::weird_refs = 
--  (REF            => \(my $aref    = []),
--   VSTRING        => \(my $vstring = v1.2.3),
--   'long VSTRING' => \(my $lvstring = eval "v" . 0 x 300),
--   LVALUE         => \(my $substr  = substr((my $str = "foo"), 0, 3)));
-+my %weird_refs = (
-+    REF            => \(my $aref    = []),
-+    VSTRING        => \(my $vstring = v1.2.3),
-+    'long VSTRING' => \(my $lvstring = eval "v" . 0 x 300),
-+    LVALUE         => \(my $substr  = substr((my $str = "foo"), 0, 3))
-+);
- 
- my $test = 18;
--my $tests = $test + 41 + (2 * 6 * keys %::immortals) + (3 * keys %::weird_refs);
-+my $tests = $test + 41 + (2 * 6 * keys %immortals) + (3 * keys %weird_refs);
- plan(tests => $tests);
- 
- package SHORT_NAME;
-@@ -57,36 +54,36 @@ package SHORT_NAME_WITH_HOOK;
- sub make { bless [], shift }
- 
- sub STORABLE_freeze {
--	my $self = shift;
--	return ("", $self);
-+    my $self = shift;
-+    return ("", $self);
- }
- 
- sub STORABLE_thaw {
--	my $self = shift;
--	my $cloning = shift;
--	my ($x, $obj) = @_;
--	die "STORABLE_thaw" unless $obj eq $self;
-+    my $self = shift;
-+    my $cloning = shift;
-+    my ($x, $obj) = @_;
-+    die "STORABLE_thaw" unless $obj eq $self;
- }
- 
- package main;
- 
- # Still less than 256 bytes, so long classname logic not fully exercised
- #   Identifier too long - 5.004
--#   parser.h: char	tokenbuf[256]: cperl5.24 => 1024
-+#   parser.h: char      tokenbuf[256]: cperl5.24 => 1024
- my $m = ($Config{usecperl} and $] >= 5.024) ? 56 : 14;
- my $longname = "LONG_NAME_" . ('xxxxxxxxxxxxx::' x $m) . "final";
- 
- eval <<EOC;
- package $longname;
- 
--\@ISA = ("SHORT_NAME");
-+our \@ISA = ("SHORT_NAME");
- EOC
- is($@, '');
- 
- eval <<EOC;
- package ${longname}_WITH_HOOK;
- 
--\@ISA = ("SHORT_NAME_WITH_HOOK");
-+our \@ISA = ("SHORT_NAME_WITH_HOOK");
- EOC
- is($@, '');
- 
-@@ -136,7 +133,7 @@ sub STORABLE_freeze {
-     # Some reference some number of times.
-     my $self = shift;
-     my ($what, $times) = @$self;
--    return ("$what$times", ($::immortals{$what}) x $times);
-+    return ("$what$times", ($immortals{$what}) x $times);
- }
- 
- sub STORABLE_thaw {
-@@ -146,7 +143,7 @@ sub STORABLE_thaw {
-     my ($what, $times) = $x =~ /(.)(\d+)/;
-     die "'$x' didn't match" unless defined $times;
-     main::is(scalar @refs, $times);
--    my $expect = $::immortals{$what};
-+    my $expect = $immortals{$what};
-     die "'$x' did not give a reference" unless ref $expect;
-     my $fail;
-     foreach (@refs) {
-@@ -162,37 +159,37 @@ package main;
- # $Storable::DEBUGME = 1;
- my $count;
- foreach $count (1..3) {
--  my $immortal;
--  foreach $immortal (keys %::immortals) {
--    print "# $immortal x $count\n";
--    my $i =  RETURNS_IMMORTALS->make ($immortal, $count);
--
--    my $f = freeze ($i);
--  TODO: {
--      # ref sv_true is not always sv_true, at least in older threaded perls.
--      local $TODO = "Some 5.10/12 do not preserve ref identity with freeze \\(1 == 1)"
--        if !defined($f) and $] < 5.013 and $] > 5.009 and $immortal eq 'y';
--      isnt($f, undef);
-+    my $immortal;
-+    foreach $immortal (keys %immortals) {
-+        print "# $immortal x $count\n";
-+        my $i =  RETURNS_IMMORTALS->make ($immortal, $count);
-+
-+        my $f = freeze ($i);
-+        TODO: {
-+            # ref sv_true is not always sv_true, at least in older threaded perls.
-+            local $TODO = "Some 5.10/12 do not preserve ref identity with freeze \\(1 == 1)"
-+                if !defined($f) and $] < 5.013 and $] > 5.009 and $immortal eq 'y';
-+            isnt($f, undef);
-+        }
-+        my $t = thaw $f;
-+        pass("thaw didn't crash");
-     }
--    my $t = thaw $f;
--    pass("thaw didn't crash");
--  }
- }
- 
- # Test automatic require of packages to find thaw hook.
- 
- package HAS_HOOK;
- 
--$loaded_count = 0;
--$thawed_count = 0;
-+our $loaded_count = 0;
-+our $thawed_count = 0;
- 
- sub make {
--  bless [];
-+    bless [];
- }
- 
- sub STORABLE_freeze {
--  my $self = shift;
--  return '';
-+    my $self = shift;
-+    return '';
- }
- 
- package main;
-@@ -220,26 +217,29 @@ is(ref $t, 'HAS_HOOK');
- {
-     package STRESS_THE_STACK;
- 
-+    our $freeze_count = 0;
-+    our $thaw_count = 0;
-+
-     my $stress;
-     sub make {
--	bless [];
-+        bless [];
-     }
- 
-     sub no_op {
--	0;
-+        0;
-     }
- 
-     sub STORABLE_freeze {
--	my $self = shift;
--	++$freeze_count;
--	return no_op(1..(++$stress * 2000)) ? die "can't happen" : '';
-+        my $self = shift;
-+        ++$freeze_count;
-+        return no_op(1..(++$stress * 2000)) ? die "can't happen" : '';
-     }
- 
-     sub STORABLE_thaw {
--	my $self = shift;
--	++$thaw_count;
--	no_op(1..(++$stress * 2000)) && die "can't happen";
--	return;
-+        my $self = shift;
-+        ++$thaw_count;
-+        no_op(1..(++$stress * 2000)) && die "can't happen";
-+        return;
-     }
- }
- 
-@@ -257,10 +257,7 @@ is($STRESS_THE_STACK::thaw_count, 1);
- isnt($t, undef);
- is(ref $t, 'STRESS_THE_STACK');
- 
--my $file = "storable-testfile.$$";
--die "Temporary file '$file' already exists" if -e $file;
--
--END { while (-f $file) {unlink $file or die "Can't unlink '$file': $!" }}
-+my $file = tempfilename();
- 
- $STRESS_THE_STACK::freeze_count = 0;
- $STRESS_THE_STACK::thaw_count = 0;
-@@ -282,7 +279,7 @@ is(ref $t, 'STRESS_THE_STACK');
-     my $o= {str=>bless {}};
-     my $f= ::freeze($o);
-     ::is ref $o->{str}, __PACKAGE__,
--	'assignment to $_[0] in STORABLE_freeze does not corrupt things';
-+        'assignment to $_[0] in STORABLE_freeze does not corrupt things';
- }
- 
- # [perl #113880]
-@@ -307,15 +304,18 @@ is(ref $t, 'STRESS_THE_STACK');
-             # It is not just Storable that did not support vstrings. :-)
-             # See https://rt.cpan.org/Ticket/Display.html?id=78678
-             my $newver = "version"->can("new")
--                           ? sub { "version"->new(shift) }
--                           : sub { "" };
-+                            ? sub {
-+                              no warnings;
-+                              "version"->new(shift)
-+                            }
-+                            : sub { "" };
-             if (!ok
--                  $$thawn eq $$obj && &$newver($$thawn) eq &$newver($$obj),
--                 "get the right value back"
-+                $$thawn eq $$obj && &$newver($$thawn) eq &$newver($$obj),
-+                "get the right value back"
-             ) {
-                 diag "$$thawn vs $$obj";
-                 diag &$newver($$thawn) eq &$newver($$obj) if &$newver(1);
--             }
-+            }
-         }
-         else {
-             is_deeply($thawn, $obj, "get the right value back");
-@@ -365,16 +365,16 @@ is(ref $t, 'STRESS_THE_STACK');
-             die ${$_[0]}
-         }
- 
--	package ThawHookDies;
--	sub STORABLE_freeze {
--	    my ($self, $cloning) = @_;
--	    my $tmp = $$self;
--	    return "a", \$tmp;
--	}
--	sub STORABLE_thaw {
--	    my ($self, $cloning, $str, $obj) = @_;
--	    die $$obj;
--	}
-+        package ThawHookDies;
-+        sub STORABLE_freeze {
-+            my ($self, $cloning) = @_;
-+            my $tmp = $$self;
-+            return "a", \$tmp;
-+        }
-+        sub STORABLE_thaw {
-+            my ($self, $cloning, $str, $obj) = @_;
-+            die $$obj;
-+        }
-     }
-     my $x = bless \(my $tmpx = "Foo"), "FreezeHookDies";
-     my $y = bless \(my $tmpy = []), "FreezeHookDies";
-@@ -434,13 +434,13 @@ is(ref $t, 'STRESS_THE_STACK');
-     };
-     my $msg = $@;
-     like($msg, qr/Unexpected object type \(GLOB\) of class 'GlobHooked' in store_hook\(\) calling GlobHookedBase::STORABLE_freeze/,
--         "check we get the verbose message");
-+        "check we get the verbose message");
- }
- 
- SKIP:
- {
-     $] < 5.012
--      and skip "Can't assign regexps directly before 5.12", 4;
-+        and skip "Can't assign regexps directly before 5.12", 4;
-     my $hook_called;
-     # store regexp via hook
-     {
-diff --git a/t/boolean.t b/t/boolean.t
-index 9ba19c0..70b65a4 100644
---- a/t/boolean.t
-+++ b/t/boolean.t
-@@ -8,77 +8,67 @@ BEGIN {
-     $false_ref = \!!0;
- }
- 
--BEGIN {
--    unshift @INC, 't';
--    unshift @INC, 't/compat' if $] < 5.006002;
--    require Config;
--    if ($ENV{PERL_CORE} and $Config::Config{'extensions'} !~ /\bStorable\b/) {
--        print "1..0 # Skip: Storable was not built\n";
--        exit 0;
--    }
--}
--
- use Test::More tests => 12;
- use Storable qw(thaw freeze);
- 
- use constant CORE_BOOLS => defined &builtin::is_bool;
- 
- {
--  my $x = $true_ref;
--  my $y = ${thaw freeze \$x};
--  is($y, $x);
--  eval {
--    $$y = 2;
--  };
--  isnt $@, '',
--    'immortal true maintained as immortal';
-+    my $x = $true_ref;
-+    my $y = ${thaw freeze \$x};
-+    is($y, $x);
-+    eval {
-+        $$y = 2;
-+    };
-+    isnt $@, '',
-+        'immortal true maintained as immortal';
- }
- 
- {
--  my $x = $false_ref;
--  my $y = ${thaw freeze \$x};
--  is($y, $x);
--  eval {
--    $$y = 2;
--  };
--  isnt $@, '',
--    'immortal false maintained as immortal';
-+    my $x = $false_ref;
-+    my $y = ${thaw freeze \$x};
-+    is($y, $x);
-+    eval {
-+        $$y = 2;
-+    };
-+    isnt $@, '',
-+        'immortal false maintained as immortal';
- }
- 
- {
--  my $true = $$true_ref;
--  my $x = \$true;
--  my $y = ${thaw freeze \$x};
--  is($$y, $$x);
--  is($$y, '1');
--  SKIP: {
--    skip "perl $] does not support tracking boolean values", 1
--      unless CORE_BOOLS;
--    BEGIN { CORE_BOOLS and warnings->unimport('experimental::builtin') }
--    ok builtin::is_bool($$y);
--  }
--  eval {
--    $$y = 2;
--  };
--  is $@, '',
--    'mortal true maintained as mortal';
-+    my $true = $$true_ref;
-+    my $x = \$true;
-+    my $y = ${thaw freeze \$x};
-+    is($$y, $$x);
-+    is($$y, '1');
-+    SKIP: {
-+        skip "perl $] does not support tracking boolean values", 1
-+            unless CORE_BOOLS;
-+        BEGIN { CORE_BOOLS and warnings->unimport('experimental::builtin') }
-+        ok builtin::is_bool($$y);
-+    }
-+    eval {
-+        $$y = 2;
-+    };
-+    is $@, '',
-+        'mortal true maintained as mortal';
- }
- 
- {
--  my $false = $$false_ref;
--  my $x = \$false;
--  my $y = ${thaw freeze \$x};
--  is($$y, $$x);
--  is($$y, '');
--  SKIP: {
--    skip "perl $] does not support tracking boolean values", 1
--      unless CORE_BOOLS;
--    BEGIN { CORE_BOOLS and warnings->unimport('experimental::builtin') }
--    ok builtin::is_bool($$y);
--  }
--  eval {
--    $$y = 2;
--  };
--  is $@, '',
--    'mortal true maintained as mortal';
-+    my $false = $$false_ref;
-+    my $x = \$false;
-+    my $y = ${thaw freeze \$x};
-+    is($$y, $$x);
-+    is($$y, '');
-+    SKIP: {
-+        skip "perl $] does not support tracking boolean values", 1
-+            unless CORE_BOOLS;
-+        BEGIN { CORE_BOOLS and warnings->unimport('experimental::builtin') }
-+        ok builtin::is_bool($$y);
-+    }
-+    eval {
-+        $$y = 2;
-+    };
-+    is $@, '',
-+        'mortal true maintained as mortal';
- }
-diff --git a/t/canonical.t b/t/canonical.t
-index 3b930aa..6237db6 100644
---- a/t/canonical.t
-+++ b/t/canonical.t
-@@ -1,21 +1,13 @@
- #!./perl
- #
- #  Copyright (c) 1995-2000, Raphael Manfredi
--#  
-+#
- #  You may redistribute only under the same terms as Perl 5, as specified
- #  in the README file that comes with the distribution.
--#  
--
--sub BEGIN {
--    unshift @INC, 't';
--    unshift @INC, 't/compat' if $] < 5.006002;
--    require Config; import Config;
--    if ($ENV{PERL_CORE} and $Config{'extensions'} !~ /\bStorable\b/) {
--        print "1..0 # Skip: Storable was not built\n";
--        exit 0;
--    }
--}
-+#
- 
-+use strict;
-+use warnings;
- 
- use Storable qw(freeze thaw dclone);
- our ($debugging, $verbose);
-@@ -26,56 +18,61 @@ use Test::More tests => 8;
- # (you may want to reduce the size of the hashes too)
- # $debugging = 1;
- 
--$hashsize = 100;
--$maxhash2size = 100;
--$maxarraysize = 100;
-+my $hashsize = 100;
-+my $maxhash2size = 100;
-+my $maxarraysize = 100;
- 
- # Use Digest::MD5 if its available to make random string keys
- 
- eval { require Digest::MD5; };
--$gotmd5 = !$@;
-+my $gotmd5 = !$@;
- note "Will use Digest::MD5" if $gotmd5;
- 
- # Use Data::Dumper if debugging and it is available to create an ASCII dump
- 
-+my $gotdd;
- if ($debugging) {
-     eval { require "Data/Dumper.pm" };
-     $gotdd  = !$@;
- }
- 
--@fixed_strings = ("January", "February", "March", "April", "May", "June",
--		  "July", "August", "September", "October", "November", "December" );
-+my @fixed_strings = (
-+    "January", "February", "March", "April", "May", "June",
-+    "July", "August", "September", "October", "November", "December"
-+);
- 
- # Build some arbitrarily complex data structure starting with a top level hash
- # (deeper levels contain scalars, references to hashes or references to arrays);
- 
-+my %a1;
-+
- for (my $i = 0; $i < $hashsize; $i++) {
--	my($k) = int(rand(1_000_000));
--	$k = Digest::MD5::md5_hex($k) if $gotmd5 and int(rand(2));
--	$a1{$k} = { key => "$k", "value" => $i };
--
--	# A third of the elements are references to further hashes
--
--	if (int(rand(1.5))) {
--		my($hash2) = {};
--		my($hash2size) = int(rand($maxhash2size));
--		while ($hash2size--) {
--			my($k2) = $k . $i . int(rand(100));
--			$hash2->{$k2} = $fixed_strings[rand(int(@fixed_strings))];
--		}
--		$a1{$k}->{value} = $hash2;
--	}
--
--	# A further third are references to arrays
--
--	elsif (int(rand(2))) {
--		my($arr_ref) = [];
--		my($arraysize) = int(rand($maxarraysize));
--		while ($arraysize--) {
--			push(@$arr_ref, $fixed_strings[rand(int(@fixed_strings))]);
--		}
--		$a1{$k}->{value} = $arr_ref;
--	}	
-+    my($k) = int(rand(1_000_000));
-+    $k = Digest::MD5::md5_hex($k) if $gotmd5 and int(rand(2));
-+    $a1{$k} = { key => "$k", "value" => $i };
-+
-+    # A third of the elements are references to further hashes
-+
-+    if (int(rand(1.5))) {
-+        my($hash2) = {};
-+        my($hash2size) = int(rand($maxhash2size));
-+        while ($hash2size--) {
-+            my($k2) = $k . $i . int(rand(100));
-+            $hash2->{$k2} = $fixed_strings[rand(int(@fixed_strings))];
-+        }
-+        $a1{$k}->{value} = $hash2;
-+    }
-+
-+    # A further third are references to arrays
-+
-+    elsif (int(rand(2))) {
-+        my($arr_ref) = [];
-+        my($arraysize) = int(rand($maxarraysize));
-+        while ($arraysize--) {
-+            push(@$arr_ref, $fixed_strings[rand(int(@fixed_strings))]);
-+        }
-+        $a1{$k}->{value} = $arr_ref;
-+    }
- }
- 
- 
-@@ -84,25 +81,27 @@ print STDERR Data::Dumper::Dumper(\%a1) if ($verbose and $gotdd);
- 
- # Copy the hash, element by element in order of the keys
- 
--foreach $k (sort keys %a1) {
-+my %a2;
-+
-+foreach my $k (sort keys %a1) {
-     $a2{$k} = { key => "$k", "value" => $a1{$k}->{value} };
- }
- 
- # Deep clone the hash
- 
--$a3 = dclone(\%a1);
-+my $a3 = dclone(\%a1);
- 
- # In canonical mode the frozen representation of each of the hashes
- # should be identical
- 
- $Storable::canonical = 1;
- 
--$x1 = freeze(\%a1);
--$x2 = freeze(\%a2);
--$x3 = freeze($a3);
-+my $x1 = freeze(\%a1);
-+my $x2 = freeze(\%a2);
-+my $x3 = freeze($a3);
- 
--cmp_ok(length $x1, '>', $hashsize);	# sanity check
--is(length $x1, length $x2);		# idem
-+cmp_ok(length $x1, '>', $hashsize);     # sanity check
-+is(length $x1, length $x2);             # idem
- is($x1, $x2);
- is($x1, $x3);
- 
-diff --git a/t/circular_hook.t b/t/circular_hook.t
-index fd635c0..66f9afe 100644
---- a/t/circular_hook.t
-+++ b/t/circular_hook.t
-@@ -12,15 +12,8 @@
- # This file tests several known-error cases relating to STORABLE_attach, in
- # which Storable should (correctly) throw errors.
- 
--sub BEGIN {
--    unshift @INC, 't';
--    unshift @INC, 't/compat' if $] < 5.006002;
--    require Config; import Config;
--    if ($ENV{PERL_CORE} and $Config{'extensions'} !~ /\bStorable\b/) {
--        print "1..0 # Skip: Storable was not built\n";
--        exit 0;
--    }
--}
-+use strict;
-+use warnings;
- 
- use Storable ();
- use Test::More tests => 9;
-@@ -54,34 +47,34 @@ is_deeply( \@Foo::order, [ 'Bar', 'Foo' ], 'thaw order is correct (depth first)'
- 
- package Foo;
- 
--@order = ();
-+our @order = ();
- 
- sub STORABLE_freeze {
--	my ($self, $clone) = @_;
--	my $class = ref $self;
--	
--	# print "# Freezing $class\n";
-+    my ($self, $clone) = @_;
-+    my $class = ref $self;
-+
-+    # print "# Freezing $class\n";
- 
--	return ($class, $self->{$class});
-+    return ($class, $self->{$class});
- }
- 
- sub STORABLE_thaw {
--	my ($self, $clone, $string, @refs) = @_;
--	my $class = ref $self;
-+    my ($self, $clone, $string, @refs) = @_;
-+    my $class = ref $self;
- 
--	# print "# Thawing $class\n";
-+    # print "# Thawing $class\n";
- 
--	$self->{$class} = shift @refs;
-+    $self->{$class} = shift @refs;
- 
--	push @order, $class;
-+    push @order, $class;
- 
-- 	return;
-+    return;
- }
- 
- package Bar;
- 
- BEGIN {
--@ISA = 'Foo';
-+our @ISA = 'Foo';
- }
- 
- 1;
-diff --git a/t/code.t b/t/code.t
-index b4e7081..a86b296 100644
---- a/t/code.t
-+++ b/t/code.t
-@@ -6,34 +6,26 @@
- #  in the README file that comes with the distribution.
- #
- 
--sub BEGIN {
--    unshift @INC, 't';
--    unshift @INC, 't/compat' if $] < 5.006002;
--    require Config; import Config;
--    if ($ENV{PERL_CORE} and $Config{'extensions'} !~ /\bStorable\b/) {
--        print "1..0 # Skip: Storable was not built\n";
--        exit 0;
--    }
--}
-+# before strict/warnings to make the life for Safe->reval easier
-+sub code { "JAPH" }
-+my $coderef = sub { 6*7 };
- 
- use strict;
-+use warnings;
-+
- BEGIN {
-     if (!eval q{
--	use Test::More;
--	use B::Deparse 0.61;
--	use 5.006;
--	1;
-+        use B::Deparse 0.61;
-+        1;
-     }) {
--	print "1..0 # skip: tests only work with B::Deparse 0.61 and at least perl 5.6.0\n";
--	exit;
--    }
--    require File::Spec;
--    if ($File::Spec::VERSION < 0.8) {
--	print "1..0 # Skip: newer File::Spec needed\n";
--	exit 0;
-+        print "1..0 # skip: tests only work with B::Deparse 0.61\n";
-+        exit;
-     }
- }
- 
-+use Test::More;
-+use File::Spec;
-+
- BEGIN { plan tests => 63 }
- 
- use Storable qw(retrieve store nstore freeze nfreeze thaw dclone);
-@@ -46,33 +38,29 @@ our ($freezed, $thawed, @obj, @res, $blessed_code);
- $blessed_code = bless sub { "blessed" }, "Some::Package";
- { package Another::Package; sub foo { __PACKAGE__ } }
- 
--{
--    no strict; # to make the life for Safe->reval easier
--    sub code { "JAPH" }
--}
--
- local *FOO;
- 
--@obj =
--    ([\&code,                   # code reference
--      sub { 6*7 },
--      $blessed_code,            # blessed code reference
--      \&Another::Package::foo,  # code in another package
--      sub ($$;$) { 0 },         # prototypes
--      sub { print "test\n" },
--      \&Storable::_store,       # large scalar
--     ],
-+@obj = (
-+    [
-+        \&code,                   # code reference
-+        $coderef,
-+        $blessed_code,            # blessed code reference
-+        \&Another::Package::foo,  # code in another package
-+        sub ($$;$) { 0 },         # prototypes
-+        sub { print "test\n" },
-+        \&Storable::_store,       # large scalar
-+    ],
- 
--     {"a" => sub { "srt" }, "b" => \&code},
-+    {"a" => sub { "srt" }, "b" => \&code},
- 
--     sub { ord("a")-ord("7") },
-+    sub { ord("a")-ord("7") },
- 
--     \&code,
-+    \&code,
- 
--     \&dclone,                 # XS function
-+    \&dclone,                 # XS function
- 
--     sub { open FOO, '<', "/" },
--    );
-+    sub { open FOO, '<', "/" },
-+);
- 
- $Storable::Deparse = 1;
- $Storable::Eval    = 1;
-@@ -156,10 +144,10 @@ is(prototype($thawed->[4]), prototype($obj[0]->[4]));
-     local $Storable::Eval = 0;
- 
-     for my $i (0 .. 1) {
--	$freezed = freeze $obj[$i];
--	$@ = "";
--	eval { $thawed  = thaw $freezed };
--	like($@, qr/Can\'t eval/);
-+        $freezed = freeze $obj[$i];
-+        $@ = "";
-+        eval { $thawed  = thaw $freezed };
-+        like($@, qr/Can\'t eval/);
-     }
- }
- 
-@@ -167,9 +155,9 @@ is(prototype($thawed->[4]), prototype($obj[0]->[4]));
- 
-     local $Storable::Deparse = 0;
-     for my $i (0 .. 1) {
--	$@ = "";
--	eval { $freezed = freeze $obj[$i] };
--	like($@, qr/Can\'t store CODE items/);
-+        $@ = "";
-+        eval { $freezed = freeze $obj[$i] };
-+        like($@, qr/Can\'t store CODE items/);
-     }
- }
- 
-@@ -177,11 +165,11 @@ is(prototype($thawed->[4]), prototype($obj[0]->[4]));
-     local $Storable::Eval = 0;
-     local $Storable::forgive_me = 1;
-     for my $i (0 .. 4) {
--	$freezed = freeze $obj[0]->[$i];
--	$@ = "";
--	eval { $thawed  = thaw $freezed };
--	is($@, "");
--	like($$thawed, qr/^sub/);
-+        $freezed = freeze $obj[0]->[$i];
-+        $@ = "";
-+        eval { $thawed  = thaw $freezed };
-+        is($@, "");
-+        like($$thawed, qr/^sub/);
-     }
- }
- 
-@@ -193,7 +181,7 @@ is(prototype($thawed->[4]), prototype($obj[0]->[4]));
- 
-     open(SAVEERR, ">&STDERR");
-     open(STDERR, '>', $devnull) or
--	( print SAVEERR "Unable to redirect STDERR: $!\n" and exit(1) );
-+        ( print SAVEERR "Unable to redirect STDERR: $!\n" and exit(1) );
- 
-     eval { $freezed = freeze $obj[0]->[0] };
- 
-@@ -204,7 +192,7 @@ is(prototype($thawed->[4]), prototype($obj[0]->[4]));
- }
- 
- {
--    my $safe = new Safe;
-+    my $safe = Safe->new;
-     local $Storable::Eval = sub { $safe->reval(shift) };
- 
-     $freezed = freeze $obj[0]->[0];
-@@ -219,25 +207,25 @@ is(prototype($thawed->[4]), prototype($obj[0]->[4]));
-     like($@, qr/(trapped|Code sub)/);
- 
-     if (0) {
--	# Disable or fix this test if the internal representation of Storable
--	# changes.
--	skip("no malicious storable file check", 1);
-+        # Disable or fix this test if the internal representation of Storable
-+        # changes.
-+        skip("no malicious storable file check", 1);
-     } else {
--	# Construct malicious storable code
--	$freezed = nfreeze $obj[0]->[0];
--	my $bad_code = ';open FOO, "/badfile"';
--	# 5th byte is (short) length of scalar
--	my $len = ord(substr($freezed, 4, 1));
--	substr($freezed, 4, 1, chr($len+length($bad_code)));
--	substr($freezed, -1, 0, $bad_code);
--	$@ = "";
--	eval { $thawed = thaw $freezed };
--	like($@, qr/(trapped|Code sub)/);
-+        # Construct malicious storable code
-+        $freezed = nfreeze $obj[0]->[0];
-+        my $bad_code = ';open FOO, "/badfile"';
-+        # 5th byte is (short) length of scalar
-+        my $len = ord(substr($freezed, 4, 1));
-+        substr($freezed, 4, 1, chr($len+length($bad_code)));
-+        substr($freezed, -1, 0, $bad_code);
-+        $@ = "";
-+        eval { $thawed = thaw $freezed };
-+        like($@, qr/(trapped|Code sub)/);
-     }
- }
- 
- {
--    my $safe = new Safe;
-+    my $safe = Safe->new;
-     # because of opcodes used in "use strict":
-     $safe->permit(qw(:default require caller));
-     local $Storable::Eval = sub { $safe->reval(shift) };
-@@ -251,18 +239,19 @@ is(prototype($thawed->[4]), prototype($obj[0]->[4]));
- 
- {
-     {
--	package MySafe;
--	sub new { bless {}, shift }
--	sub reval {
--	    my $source = $_[1];
--	    # Here you can apply some nifty regexpes to ensure the
--	    # safeness of the source code.
--	    my $coderef = eval $source;
--	    $coderef;
--	}
-+        package MySafe;
-+        sub new { bless {}, shift }
-+        sub reval {
-+            my $source = $_[1];
-+            # Here you can apply some nifty regexpes to ensure the
-+            # safeness of the source code.
-+            no warnings;
-+            my $coderef = eval $source;
-+            $coderef;
-+        }
-     }
- 
--    my $safe = new MySafe;
-+    my $safe = MySafe->new;
-     local $Storable::Eval = sub { $safe->reval($_[0]) };
- 
-     $freezed = freeze $obj[0];
-@@ -272,11 +261,11 @@ is(prototype($thawed->[4]), prototype($obj[0]->[4]));
-     if ($@ ne "") {
-         fail() for (1..5);
-     } else {
--	is($thawed->[0]->(), "JAPH");
--	is($thawed->[1]->(), 42);
--	is($thawed->[2]->(), "blessed");
--	is($thawed->[3]->(), "Another::Package");
--	is(prototype($thawed->[4]), prototype($obj[0]->[4]));
-+        is($thawed->[0]->(), "JAPH");
-+        is($thawed->[1]->(), 42);
-+        is($thawed->[2]->(), "blessed");
-+        is($thawed->[3]->(), "Another::Package");
-+        is(prototype($thawed->[4]), prototype($obj[0]->[4]));
-     }
- }
- 
-@@ -292,18 +281,18 @@ is(prototype($thawed->[4]), prototype($obj[0]->[4]));
-     local $Storable::Eval    = 1;
- 
-     for my $sub ($short_sub, $long_sub) {
--	my $res;
-+        my $res;
- 
--	$res = thaw freeze [$sub, $sub];
--	is(int($res->[0]), int($res->[1]));
-+        $res = thaw freeze [$sub, $sub];
-+        is(int($res->[0]), int($res->[1]));
- 
--	$res = thaw freeze [$sclr, $sub, $sub, $sclr];
--	is(int($res->[0]), int($res->[3]));
--	is(int($res->[1]), int($res->[2]));
-+        $res = thaw freeze [$sclr, $sub, $sub, $sclr];
-+        is(int($res->[0]), int($res->[3]));
-+        is(int($res->[1]), int($res->[2]));
- 
--	$res = thaw freeze [$sub, $sub, $sclr, $sclr];
--	is(int($res->[0]), int($res->[1]));
--	is(int($res->[2]), int($res->[3]));
-+        $res = thaw freeze [$sub, $sub, $sclr, $sclr];
-+        is(int($res->[0]), int($res->[1]));
-+        is(int($res->[2]), int($res->[3]));
-     }
- 
- }
-diff --git a/t/compat01.t b/t/compat01.t
-index 56d7df6..1b5fc40 100644
---- a/t/compat01.t
-+++ b/t/compat01.t
-@@ -1,22 +1,16 @@
- #!perl -w
- 
--BEGIN {
--    unshift @INC, 't';
--    unshift @INC, 't/compat' if $] < 5.006002;
--    require Config; import Config;
--    if ($ENV{PERL_CORE} and $Config{'extensions'} !~ /\bStorable\b/) {
--        print "1..0 # Skip: Storable was not built\n";
--        exit 0;
--    }
-+use strict;
-+use warnings;
- 
--    use Config;
-+use Config;
-+BEGIN {
-     if ($Config{byteorder} ne "1234") {
--	print "1..0 # Skip: Test only works for 32 bit little-ending machines\n";
--	exit 0;
-+        print "1..0 # Skip: Test only works for 32 bit little-ending machines\n";
-+        exit 0;
-     }
- }
- 
--use strict;
- use Storable qw(retrieve);
- use Test::More;
- 
-diff --git a/t/compat06.t b/t/compat06.t
-index f8446ee..b82ee2f 100644
---- a/t/compat06.t
-+++ b/t/compat06.t
-@@ -1,20 +1,13 @@
- #!./perl
- #
- #  Copyright (c) 1995-2000, Raphael Manfredi
--#  
-+#
- #  You may redistribute only under the same terms as Perl 5, as specified
- #  in the README file that comes with the distribution.
- #
- 
--BEGIN {
--    unshift @INC, 't';
--    unshift @INC, 't/compat' if $] < 5.006002;
--    require Config; import Config;
--    if ($ENV{PERL_CORE} and $Config{'extensions'} !~ /\bStorable\b/) {
--        print "1..0 # Skip: Storable was not built\n";
--        exit 0;
--    }
--}
-+use strict;
-+use warnings;
- 
- use Test::More tests => 8;
- 
-@@ -22,51 +15,53 @@ use Storable qw(freeze nfreeze thaw);
- 
- package TIED_HASH;
- 
-+our $hash_fetch;
-+
- sub TIEHASH {
--	my $self = bless {}, shift;
--	return $self;
-+    my $self = bless {}, shift;
-+    return $self;
- }
- 
- sub FETCH {
--	my $self = shift;
--	my ($key) = @_;
--	$main::hash_fetch++;
--	return $self->{$key};
-+    my $self = shift;
-+    my ($key) = @_;
-+    $hash_fetch++;
-+    return $self->{$key};
- }
- 
- sub STORE {
--	my $self = shift;
--	my ($key, $val) = @_;
--	$self->{$key} = $val;
-+    my $self = shift;
-+    my ($key, $val) = @_;
-+    $self->{$key} = $val;
- }
- 
- package SIMPLE;
- 
- sub make {
--	my $self = bless [], shift;
--	my ($x) = @_;
--	$self->[0] = $x;
--	return $self;
-+    my $self = bless [], shift;
-+    my ($x) = @_;
-+    $self->[0] = $x;
-+    return $self;
- }
- 
- package ROOT;
- 
- sub make {
--	my $self = bless {}, shift;
--	my $h = tie %hash, TIED_HASH;
--	$self->{h} = $h;
--	$self->{ref} = \%hash;
--	my @pool;
--	for (my $i = 0; $i < 5; $i++) {
--		push(@pool, SIMPLE->make($i));
--	}
--	$self->{obj} = \@pool;
--	my @a = ('string', $h, $self);
--	$self->{a} = \@a;
--	$self->{num} = [1, 0, -3, -3.14159, 456, 4.5];
--	$h->{key1} = 'val1';
--	$h->{key2} = 'val2';
--	return $self;
-+    my $self = bless {}, shift;
-+    my $h = tie my %hash, 'TIED_HASH';
-+    $self->{h} = $h;
-+    $self->{ref} = \%hash;
-+    my @pool;
-+    for (my $i = 0; $i < 5; $i++) {
-+        push(@pool, SIMPLE->make($i));
-+    }
-+    $self->{obj} = \@pool;
-+    my @a = ('string', $h, $self);
-+    $self->{a} = \@a;
-+    $self->{num} = [1, 0, -3, -3.14159, 456, 4.5];
-+    $h->{key1} = 'val1';
-+    $h->{key2} = 'val2';
-+    return $self;
- };
- 
- sub num { $_[0]->{num} }
-@@ -77,33 +72,33 @@ sub obj { $_[0]->{obj} }
- package main;
- 
- my $is_EBCDIC = (ord('A') == 193) ? 1 : 0;
-- 
-+
- my $r = ROOT->make;
- 
- my $data = '';
--if (!$is_EBCDIC) {			# ASCII machine
--	while (<DATA>) {
--		next if /^#/;
--	    $data .= unpack("u", $_);
--	}
-+if (!$is_EBCDIC) {                      # ASCII machine
-+    while (<DATA>) {
-+        next if /^#/;
-+        $data .= unpack("u", $_);
-+    }
- } else {
--	while (<DATA>) {
--		next if /^#$/;		# skip comments
--		next if /^#\s+/;	# skip comments
--		next if /^[^#]/;	# skip uuencoding for ASCII machines
--		s/^#//;				# prepare uuencoded data for EBCDIC machines
--		$data .= unpack("u", $_);
--	}
-+    while (<DATA>) {
-+        next if /^#$/;          # skip comments
-+        next if /^#\s+/;        # skip comments
-+        next if /^[^#]/;        # skip uuencoding for ASCII machines
-+        s/^#//;                 # prepare uuencoded data for EBCDIC machines
-+        $data .= unpack("u", $_);
-+    }
- }
- 
- my $expected_length = $is_EBCDIC ? 217 : 278;
- is(length $data, $expected_length);
--  
-+
- my $y = thaw($data);
- isnt($y, undef);
- is(ref $y, 'ROOT');
- 
--$Storable::canonical = 1;		# Prevent "used once" warning
-+$Storable::canonical = 1;               # Prevent "used once" warning
- $Storable::canonical = 1;
- # Allow for long double string conversions.
- $y->{num}->[3] += 0;
-@@ -112,12 +107,12 @@ is(nfreeze($y), nfreeze($r));
- 
- is($y->ref->{key1}, 'val1');
- is($y->ref->{key2}, 'val2');
--is($hash_fetch, 2);
-+is($TIED_HASH::hash_fetch, 2);
- 
- my $num = $r->num;
- my $ok = 1;
- for (my $i = 0; $i < @$num; $i++) {
--	do { $ok = 0; last } unless $num->[$i] == $y->num->[$i];
-+    do { $ok = 0; last } unless $num->[$i] == $y->num->[$i];
- }
- is($ok, 1);
- 
-diff --git a/t/croak.t b/t/croak.t
-index ecd2bf8..4bc229f 100644
---- a/t/croak.t
-+++ b/t/croak.t
-@@ -5,34 +5,24 @@
- # with 5.005_03. This test shows it up, whereas malice.t does not.
- # In particular, don't use Test; as this covers up the problem.
- 
--sub BEGIN {
--    if ($ENV{PERL_CORE}) {
--	require Config; import Config;
--	%Config=%Config if 0; # cease -w
--	if ($Config{'extensions'} !~ /\bStorable\b/) {
--	    print "1..0 # Skip: Storable was not built\n";
--	    exit 0;
--	}
--    }
--}
--
- use strict;
-+#use warnings;  # ancient warnings will load Carp
- 
- BEGIN {
--  die "Oi! No! Don't change this test so that Carp is used before Storable"
--    if defined &Carp::carp;
-+    die "Oi! No! Don't change this test so that Carp is used before Storable"
-+        if defined &Carp::carp;
- }
- use Storable qw(freeze thaw);
- 
- print "1..2\n";
- 
- for my $test (1,2) {
--  eval {thaw "\xFF\xFF"};
--  if ($@ =~ /Storable binary image v127.255 more recent than I am \(v2\.\d+\)/)
--    {
--      print "ok $test\n";
--    } else {
--      chomp $@;
--      print "not ok $test # Expected a meaningful croak. Got '$@'\n";
-+    eval {thaw "\xFF\xFF"};
-+    if ($@ =~ /Storable binary image v127.255 more recent than I am \(v2\.\d+\)/) {
-+        print "ok $test\n";
-+    }
-+    else {
-+        chomp $@;
-+        print "not ok $test # Expected a meaningful croak. Got '$@'\n";
-     }
- }
-diff --git a/t/dclone.t b/t/dclone.t
-index ce6c756..ac7e93c 100644
---- a/t/dclone.t
-+++ b/t/dclone.t
-@@ -1,61 +1,58 @@
- #!./perl
- #
- #  Copyright (c) 1995-2000, Raphael Manfredi
--#  
-+#
- #  You may redistribute only under the same terms as Perl 5, as specified
- #  in the README file that comes with the distribution.
- #
- 
-+use strict;
-+use warnings;
-+
- sub BEGIN {
--    unshift @INC, 't';
--    unshift @INC, 't/compat' if $] < 5.006002;
--    require Config; import Config;
--    if ($ENV{PERL_CORE} and $Config{'extensions'} !~ /\bStorable\b/) {
--        print "1..0 # Skip: Storable was not built\n";
--        exit 0;
--    }
--    require 'st-dump.pl';
-+    unshift @INC, 't/lib';
- }
- 
-+use STDump;
- 
- use Storable qw(dclone);
- 
- use Test::More tests => 14;
- 
--$a = 'toto';
--$b = \$a;
--$c = bless {}, CLASS;
-+my $a = 'toto';
-+my $b = \$a;
-+my $c = bless {}, 'CLASS';
- $c->{attribute} = 'attrval';
--%a = ('key', 'value', 1, 0, $a, $b, 'cvar', \$c);
--@a = ('first', undef, 3, -4, -3.14159, 456, 4.5,
--	$b, \$a, $a, $c, \$c, \%a);
-+my %a = ('key', 'value', 1, 0, $a, $b, 'cvar', \$c);
-+my @a = ('first', undef, 3, -4, -3.14159, 456, 4.5,
-+    $b, \$a, $a, $c, \$c, \%a);
- 
- my $aref = dclone(\@a);
- isnt($aref, undef);
- 
--$dumped = &dump(\@a);
-+my $dumped = stdump(\@a);
- isnt($dumped, undef);
- 
--$got = &dump($aref);
-+my $got = stdump($aref);
- isnt($got, undef);
- 
- is($got, $dumped);
- 
--package FOO; @ISA = qw(Storable);
-+package FOO; our @ISA = qw(Storable);
- 
- sub make {
--	my $self = bless {};
--	$self->{key} = \%main::a;
--	return $self;
-+    my $self = bless {};
-+    $self->{key} = \%a;
-+    return $self;
- };
- 
- package main;
- 
--$foo = FOO->make;
-+my $foo = FOO->make;
- my $r = $foo->dclone;
- isnt($r, undef);
- 
--is(&dump($foo), &dump($r));
-+is(stdump($foo), stdump($r));
- 
- # Ensure refs to "undef" values are properly shared during cloning
- my $hash;
-@@ -86,9 +83,9 @@ is($$clone, '');
- SKIP: {
- # Do not fail if Tie::Hash and/or Tie::StdHash is not available
-     skip 'No Tie::StdHash available', 2
--	unless eval { require Tie::Hash; scalar keys %Tie::StdHash:: };
-+        unless eval { require Tie::Hash; scalar keys %Tie::StdHash:: };
-     skip 'This version of perl has problems with Tie::StdHash', 2
--	if $] eq "5.008";
-+        if $] eq "5.008";
-     tie my %tie, "Tie::StdHash" or die $!;
-     $tie{array} = [1,2,3,4];
-     $tie{hash} = {1,2,3,4};
-diff --git a/t/destroy.t b/t/destroy.t
-index dcc3600..b48b22d 100644
---- a/t/destroy.t
-+++ b/t/destroy.t
-@@ -1,20 +1,23 @@
- # [perl #118139] crash in global destruction when accessing the freed cxt.
-+use strict;
-+use warnings;
-+
- use Test::More tests => 1;
- use Storable;
- BEGIN {
--  store {}, "foo";
-+    store {}, "foo";
- }
- package foo;
- sub new { return bless {} }
- DESTROY {
--  open FH, '<', "foo" or die $!;
--  eval { Storable::pretrieve(*FH); };
--  close FH or die $!;
--  unlink "foo";
-+    open FH, '<', "foo" or die $!;
-+    eval { Storable::pretrieve(*FH); };
-+    close FH or die $!;
-+    unlink "foo";
- }
- 
- package main;
- # print "# $^X\n";
--$x = foo->new();
-+my $x = foo->new();
- 
- ok(1);
-diff --git a/t/downgrade.t b/t/downgrade.t
-index 43a32ed..bf40a0c 100644
---- a/t/downgrade.t
-+++ b/t/downgrade.t
-@@ -6,52 +6,42 @@
- #  in the README file that comes with the distribution.
- #
- 
--# I ought to keep this test easily backwards compatible to 5.004, so no
--# qr//;
--
- # This test checks downgrade behaviour on pre-5.8 perls when new 5.8 features
- # are encountered.
- 
--sub BEGIN {
--    unshift @INC, 't';
--    unshift @INC, 't/compat' if $] < 5.006002;
--    require Config; import Config;
--    if ($ENV{PERL_CORE} and $Config{'extensions'} !~ /\bStorable\b/) {
--        print "1..0 # Skip: Storable was not built\n";
--        exit 0;
--    }
--}
-+use strict;
-+use warnings;
- 
- use Test::More;
- use Storable 'thaw';
- 
--use strict;
- our (%U_HASH, $UTF8_CROAK, $RESTRICTED_CROAK);
- 
--our @RESTRICT_TESTS = ('Locked hash', 'Locked hash placeholder',
--                   'Locked keys', 'Locked keys placeholder',
--                  );
-+our @RESTRICT_TESTS = (
-+    'Locked hash', 'Locked hash placeholder',
-+    'Locked keys', 'Locked keys placeholder',
-+);
- our %R_HASH = (perl => 'rules');
- 
- if ($] > 5.007002) {
--  # This is cheating. "\xdf" in Latin 1 is beta S, so will match \w if it
--  # is stored in utf8, not bytes.
--  # "\xdf" is y diaresis in EBCDIC (except for cp875, but so far no-one seems
--  # to use that) which has exactly the same properties for \w
--  # So the tests happen to pass.
--  my $utf8 = "Schlo\xdf" . chr 256;
--  chop $utf8;
--
--  # \xe5 is V in EBCDIC. That doesn't have the same properties w.r.t. \w as
--  # an a circumflex, so we need to be explicit.
--
--  # and its these very properties we're trying to test - an edge case
--  # involving whether scalars are being stored in bytes or in utf8.
--  my $a_circumflex = (ord ('A') == 193 ? "\x47" : "\xe5");
--  %U_HASH = (map {$_, $_} 'castle', "ch${a_circumflex}teau", $utf8, chr 0x57CE);
--  plan tests => 169;
-+    # This is cheating. "\xdf" in Latin 1 is beta S, so will match \w if it
-+    # is stored in utf8, not bytes.
-+    # "\xdf" is y diaresis in EBCDIC (except for cp875, but so far no-one seems
-+    # to use that) which has exactly the same properties for \w
-+    # So the tests happen to pass.
-+    my $utf8 = "Schlo\xdf" . chr 256;
-+    chop $utf8;
-+
-+    # \xe5 is V in EBCDIC. That doesn't have the same properties w.r.t. \w as
-+    # an a circumflex, so we need to be explicit.
-+
-+    # and its these very properties we're trying to test - an edge case
-+    # involving whether scalars are being stored in bytes or in utf8.
-+    my $a_circumflex = (ord ('A') == 193 ? "\x47" : "\xe5");
-+    %U_HASH = (map {$_, $_} 'castle', "ch${a_circumflex}teau", $utf8, chr 0x57CE);
-+    plan tests => 169;
- } else {
--  plan tests => 59;
-+    plan tests => 59;
- }
- 
- $UTF8_CROAK = "/^Cannot retrieve UTF8 data in non-UTF8 perl/";
-@@ -59,122 +49,122 @@ $RESTRICTED_CROAK = "/^Cannot retrieve restricted hash/";
- 
- my %tests;
- {
--  local $/ = "\n\nend\n";
--  while (<DATA>) {
--    next unless /\S/s;
--    unless (/begin ([0-7]{3}) ([^\n]*)\n(.*)$/s) {
--      s/\n.*//s;
--      warn "Dodgy data in section starting '$_'";
--      next;
-+    local $/ = "\n\nend\n";
-+    while (<DATA>) {
-+        next unless /\S/s;
-+        unless (/begin ([0-7]{3}) ([^\n]*)\n(.*)$/s) {
-+            s/\n.*//s;
-+            warn "Dodgy data in section starting '$_'";
-+            next;
-+        }
-+        next unless oct $1 == ord 'A'; # Skip ASCII on EBCDIC, and vice versa
-+        my $data = unpack 'u', $3;
-+        $tests{$2} = $data;
-     }
--    next unless oct $1 == ord 'A'; # Skip ASCII on EBCDIC, and vice versa
--    my $data = unpack 'u', $3;
--    $tests{$2} = $data;
--  }
- }
- 
- # use Data::Dumper; $Data::Dumper::Useqq = 1; print Dumper \%tests;
- sub thaw_hash {
--  my ($name, $expected) = @_;
--  my $hash = eval {thaw $tests{$name}};
--  is ($@, '', "Thawed $name without error?");
--  isa_ok ($hash, 'HASH');
--  ok (defined $hash && eq_hash($hash, $expected),
--      "And it is the hash we expected?");
--  $hash;
-+    my ($name, $expected) = @_;
-+    my $hash = eval {thaw $tests{$name}};
-+    is ($@, '', "Thawed $name without error?");
-+    isa_ok ($hash, 'HASH');
-+    ok (defined $hash && eq_hash($hash, $expected),
-+        "And it is the hash we expected?");
-+    $hash;
- }
- 
- sub thaw_scalar {
--  my ($name, $expected, $bug) = @_;
--  my $scalar = eval {thaw $tests{$name}};
--  is ($@, '', "Thawed $name without error?");
--  isa_ok ($scalar, 'SCALAR', "Thawed $name?");
--  is ($$scalar, $expected, "And it is the data we expected?");
--  $scalar;
-+    my ($name, $expected, $bug) = @_;
-+    my $scalar = eval {thaw $tests{$name}};
-+    is ($@, '', "Thawed $name without error?");
-+    isa_ok ($scalar, 'SCALAR', "Thawed $name?");
-+    is ($$scalar, $expected, "And it is the data we expected?");
-+    $scalar;
- }
- 
- sub thaw_fail {
--  my ($name, $expected) = @_;
--  my $thing = eval {thaw $tests{$name}};
--  is ($thing, undef, "Thawed $name failed as expected?");
--  like ($@, $expected, "Error as predicted?");
-+    my ($name, $expected) = @_;
-+    my $thing = eval {thaw $tests{$name}};
-+    is ($thing, undef, "Thawed $name failed as expected?");
-+    like ($@, $expected, "Error as predicted?");
- }
- 
- sub test_locked_hash {
--  my $hash = shift;
--  my @keys = keys %$hash;
--  my ($key, $value) = each %$hash;
--  eval {$hash->{$key} = reverse $value};
--  like( $@, "/^Modification of a read-only value attempted/",
-+    my $hash = shift;
-+    my @keys = keys %$hash;
-+    my ($key, $value) = each %$hash;
-+    eval {$hash->{$key} = reverse $value};
-+    like( $@, "/^Modification of a read-only value attempted/",
-         'trying to change a locked key' );
--  is ($hash->{$key}, $value, "hash should not change?");
--  eval {$hash->{use} = 'perl'};
--  like( $@, "/^Attempt to access disallowed key 'use' in a restricted hash/",
-+    is ($hash->{$key}, $value, "hash should not change?");
-+    eval {$hash->{use} = 'perl'};
-+    like( $@, "/^Attempt to access disallowed key 'use' in a restricted hash/",
-         'trying to add another key' );
--  ok (eq_array([keys %$hash], \@keys), "Still the same keys?");
-+    ok (eq_array([keys %$hash], \@keys), "Still the same keys?");
- }
- 
- sub test_restricted_hash {
--  my $hash = shift;
--  my @keys = keys %$hash;
--  my ($key, $value) = each %$hash;
--  eval {$hash->{$key} = reverse $value};
--  is( $@, '',
-+    my $hash = shift;
-+    my @keys = keys %$hash;
-+    my ($key, $value) = each %$hash;
-+    eval {$hash->{$key} = reverse $value};
-+    is( $@, '',
-         'trying to change a restricted key' );
--  is ($hash->{$key}, reverse ($value), "hash should change");
--  eval {$hash->{use} = 'perl'};
--  like( $@, "/^Attempt to access disallowed key 'use' in a restricted hash/",
-+    is ($hash->{$key}, reverse ($value), "hash should change");
-+    eval {$hash->{use} = 'perl'};
-+    like( $@, "/^Attempt to access disallowed key 'use' in a restricted hash/",
-         'trying to add another key' );
--  ok (eq_array([keys %$hash], \@keys), "Still the same keys?");
-+    ok (eq_array([keys %$hash], \@keys), "Still the same keys?");
- }
- 
- sub test_placeholder {
--  my $hash = shift;
--  eval {$hash->{rules} = 42};
--  is ($@, '', 'No errors');
--  is ($hash->{rules}, 42, "New value added");
-+    my $hash = shift;
-+    eval {$hash->{rules} = 42};
-+    is ($@, '', 'No errors');
-+    is ($hash->{rules}, 42, "New value added");
- }
- 
- sub test_newkey {
--  my $hash = shift;
--  eval {$hash->{nms} = "http://nms-cgi.sourceforge.net/"};
--  is ($@, '', 'No errors');
--  is ($hash->{nms}, "http://nms-cgi.sourceforge.net/", "New value added");
-+    my $hash = shift;
-+    eval {$hash->{nms} = "http://nms-cgi.sourceforge.net/"};
-+    is ($@, '', 'No errors');
-+    is ($hash->{nms}, "http://nms-cgi.sourceforge.net/", "New value added");
- }
- 
- # $Storable::DEBUGME = 1;
- thaw_hash ('Hash with utf8 flag but no utf8 keys', \%R_HASH);
- 
- if (eval "use Hash::Util; 1") {
--  print "# We have Hash::Util, so test that the restricted hashes in <DATA> are valid\n";
--  for $Storable::downgrade_restricted (0, 1, undef, "cheese") {
-+    print "# We have Hash::Util, so test that the restricted hashes in <DATA> are valid\n";
-+    for $Storable::downgrade_restricted (0, 1, undef, "cheese") {
-+        my $hash = thaw_hash ('Locked hash', \%R_HASH);
-+        test_locked_hash ($hash);
-+        $hash = thaw_hash ('Locked hash placeholder', \%R_HASH);
-+        test_locked_hash ($hash);
-+        test_placeholder ($hash);
-+
-+        $hash = thaw_hash ('Locked keys', \%R_HASH);
-+        test_restricted_hash ($hash);
-+        $hash = thaw_hash ('Locked keys placeholder', \%R_HASH);
-+        test_restricted_hash ($hash);
-+        test_placeholder ($hash);
-+    }
-+} else {
-+    print "# We don't have Hash::Util, so test that the restricted hashes downgrade\n";
-     my $hash = thaw_hash ('Locked hash', \%R_HASH);
--    test_locked_hash ($hash);
-+    test_newkey ($hash);
-     $hash = thaw_hash ('Locked hash placeholder', \%R_HASH);
--    test_locked_hash ($hash);
--    test_placeholder ($hash);
--
-+    test_newkey ($hash);
-     $hash = thaw_hash ('Locked keys', \%R_HASH);
--    test_restricted_hash ($hash);
-+    test_newkey ($hash);
-     $hash = thaw_hash ('Locked keys placeholder', \%R_HASH);
--    test_restricted_hash ($hash);
--    test_placeholder ($hash);
--  }
--} else {
--  print "# We don't have Hash::Util, so test that the restricted hashes downgrade\n";
--  my $hash = thaw_hash ('Locked hash', \%R_HASH);
--  test_newkey ($hash);
--  $hash = thaw_hash ('Locked hash placeholder', \%R_HASH);
--  test_newkey ($hash);
--  $hash = thaw_hash ('Locked keys', \%R_HASH);
--  test_newkey ($hash);
--  $hash = thaw_hash ('Locked keys placeholder', \%R_HASH);
--  test_newkey ($hash);
--  local $Storable::downgrade_restricted = 0;
--  thaw_fail ('Locked hash', $RESTRICTED_CROAK);
--  thaw_fail ('Locked hash placeholder', $RESTRICTED_CROAK);
--  thaw_fail ('Locked keys', $RESTRICTED_CROAK);
--  thaw_fail ('Locked keys placeholder', $RESTRICTED_CROAK);
-+    test_newkey ($hash);
-+    local $Storable::downgrade_restricted = 0;
-+    thaw_fail ('Locked hash', $RESTRICTED_CROAK);
-+    thaw_fail ('Locked hash placeholder', $RESTRICTED_CROAK);
-+    thaw_fail ('Locked keys', $RESTRICTED_CROAK);
-+    thaw_fail ('Locked keys placeholder', $RESTRICTED_CROAK);
- }
- 
- print "# We have utf8 scalars, so test that the utf8 scalars in <DATA> are valid\n";
-@@ -184,44 +174,36 @@ thaw_scalar ('Short 24 bit utf8 data', chr 0xC0FFEE);
- thaw_scalar ('Long 24 bit utf8 data', chr (0xC0FFEE) x 256);
- 
- if ($] > 5.007002) {
--  print "# We have utf8 hashes, so test that the utf8 hashes in <DATA> are valid\n";
--  my $hash = thaw_hash ('Hash with utf8 keys', \%U_HASH);
--  my $a_circumflex = (ord ('A') == 193 ? "\x47" : "\xe5");
--  for (keys %$hash) {
--    my $l = 0 + /^\w+$/;
--    my $r = 0 + $hash->{$_} =~ /^\w+$/;
--    cmp_ok ($l, '==', $r, sprintf "key length %d", length $_);
--    cmp_ok ($l, '==', $_ eq "ch${a_circumflex}teau" ? 0 : 1);
--  }
--  if (eval "use Hash::Util; 1") {
--    print "# We have Hash::Util, so test that the restricted utf8 hash is valid\n";
--  my $hash = thaw_hash ('Locked hash with utf8 keys', \%U_HASH);
-+    print "# We have utf8 hashes, so test that the utf8 hashes in <DATA> are valid\n";
-+    my $hash = thaw_hash ('Hash with utf8 keys', \%U_HASH);
-+    my $a_circumflex = (ord ('A') == 193 ? "\x47" : "\xe5");
-     for (keys %$hash) {
--      my $l = 0 + /^\w+$/;
--      my $r = 0 + $hash->{$_} =~ /^\w+$/;
--      cmp_ok ($l, '==', $r, sprintf "key length %d", length $_);
--      cmp_ok ($l, '==', $_ eq "ch${a_circumflex}teau" ? 0 : 1);
-+        my $l = 0 + /^\w+$/;
-+        my $r = 0 + $hash->{$_} =~ /^\w+$/;
-+        cmp_ok ($l, '==', $r, sprintf "key length %d", length $_);
-+        cmp_ok ($l, '==', $_ eq "ch${a_circumflex}teau" ? 0 : 1);
-+    }
-+    {
-+        require Hash::Util;
-+        print "# We have Hash::Util, so test that the restricted utf8 hash is valid\n";
-+        my $hash = thaw_hash ('Locked hash with utf8 keys', \%U_HASH);
-+        for (keys %$hash) {
-+            my $l = 0 + /^\w+$/;
-+            my $r = 0 + $hash->{$_} =~ /^\w+$/;
-+            cmp_ok ($l, '==', $r, sprintf "key length %d", length $_);
-+            cmp_ok ($l, '==', $_ eq "ch${a_circumflex}teau" ? 0 : 1);
-+        }
-+        test_locked_hash ($hash);
-     }
--    test_locked_hash ($hash);
--  } else {
--    print "# We don't have Hash::Util, so test that the utf8 hash downgrades\n";
--    fail ("You can't get here [perl version $]]. This is a bug in the test.
--# Please send the output of perl -V to perlbug\@perl.org");
--  }
- } else {
--  print "# We don't have utf8 hashes, so test that the utf8 hashes downgrade\n";
--  thaw_fail ('Hash with utf8 keys', $UTF8_CROAK);
--  thaw_fail ('Locked hash with utf8 keys', $UTF8_CROAK);
--  local $Storable::drop_utf8 = 1;
--  my $expect = thaw $tests{"Hash with utf8 keys for 5.6"};
--  thaw_hash ('Hash with utf8 keys', $expect);
--  #foreach (keys %$expect) { print "'$_':\t'$expect->{$_}'\n"; }
--  #foreach (keys %$got) { print "'$_':\t'$got->{$_}'\n"; }
--  if (eval "use Hash::Util; 1") {
--    print "# We have Hash::Util, so test that the restricted hashes in <DATA> are valid\n";
--    fail ("You can't get here [perl version $]]. This is a bug in the test.
--# Please send the output of perl -V to perlbug\@perl.org");
--  } else {
-+    print "# We don't have utf8 hashes, so test that the utf8 hashes downgrade\n";
-+    thaw_fail ('Hash with utf8 keys', $UTF8_CROAK);
-+    thaw_fail ('Locked hash with utf8 keys', $UTF8_CROAK);
-+    local $Storable::drop_utf8 = 1;
-+    my $expect = thaw $tests{"Hash with utf8 keys for 5.6"};
-+    thaw_hash ('Hash with utf8 keys', $expect);
-+    #foreach (keys %$expect) { print "'$_':\t'$expect->{$_}'\n"; }
-+    #foreach (keys %$got) { print "'$_':\t'$got->{$_}'\n"; }
-     print "# We don't have Hash::Util, so test that the restricted hashes downgrade\n";
-     my $hash = thaw_hash ('Locked hash with utf8 keys', $expect);
-     test_newkey ($hash);
-@@ -230,7 +212,6 @@ if ($] > 5.007002) {
-     # Which croak comes first is a bit of an implementation issue :-)
-     local $Storable::drop_utf8 = 0;
-     thaw_fail ('Locked hash with utf8 keys', $RESTRICTED_CROAK);
--  }
- }
- __END__
- # A whole run of 2.x nfreeze data, uuencoded. The "mode bits" are the octal
-diff --git a/t/file_magic.t b/t/file_magic.t
-index a68665d..8c3f7ca 100644
---- a/t/file_magic.t
-+++ b/t/file_magic.t
-@@ -1,10 +1,8 @@
- #!perl -w
- 
--BEGIN {
--    unshift @INC, 't/compat' if $] < 5.006002;
--};
--
- use strict;
-+use warnings;
-+
- use Test::More;
- use Storable qw(store nstore);
- use Config qw(%Config);
-@@ -32,354 +30,354 @@ my @tests = (
-     [
-         "perl-store\x041234\4\4\4\xD4\xC2\32\b\3\13\0\0\0v\b\xC5\32\b...",
-         {
--          byteorder  => 1234,
--          file       => "data_perl-5.006001_i686-linux-thread-multi_Storable-0.1.le32",
--          hdrsize    => 18,
--          intsize    => 4,
--          longsize   => 4,
--          netorder   => 0,
--          ptrsize    => 4,
--          version    => -1,
--          version_nv => -1,
-+            byteorder  => 1234,
-+            file       => "data_perl-5.006001_i686-linux-thread-multi_Storable-0.1.le32",
-+            hdrsize    => 18,
-+            intsize    => 4,
-+            longsize   => 4,
-+            netorder   => 0,
-+            ptrsize    => 4,
-+            version    => -1,
-+            version_nv => -1,
-         },
-     ],
-     [
-         "perl-store\0\x041234\4\4\4\x8Co\34\b\3\13\0\0\0v\x94v\34...",
-         {
--          byteorder  => 1234,
--          file       => "data_perl-5.006001_i686-linux-thread-multi_Storable-0.4_07.le32",
--          hdrsize    => 19,
--          intsize    => 4,
--          longsize   => 4,
--          major      => 0,
--          netorder   => 0,
--          ptrsize    => 4,
--          version    => 0,
--          version_nv => 0,
-+            byteorder  => 1234,
-+            file       => "data_perl-5.006001_i686-linux-thread-multi_Storable-0.4_07.le32",
-+            hdrsize    => 19,
-+            intsize    => 4,
-+            longsize   => 4,
-+            major      => 0,
-+            netorder   => 0,
-+            ptrsize    => 4,
-+            version    => 0,
-+            version_nv => 0,
-         },
-     ],
-     [
-         "perl-store\1\x8Co\34\b\3\0\0\0\13v\x94v\34\b\1\0\0\4\0\0\0...",
-         {
--          file       => "data_perl-5.006001_i686-linux-thread-multi_Storable-0.4_07.neutral",
--          hdrsize    => 11,
--          major      => 0,
--          netorder   => 1,
--          version    => 0,
--          version_nv => 0,
-+            file       => "data_perl-5.006001_i686-linux-thread-multi_Storable-0.4_07.neutral",
-+            hdrsize    => 11,
-+            major      => 0,
-+            netorder   => 1,
-+            version    => 0,
-+            version_nv => 0,
-         },
-     ],
-     [
-         "pst0\2\x041234\4\4\4\3\13\0\0\0\1\0\4\0\0\0\0\0\0\0\0\0\0\0...",
-         {
--          byteorder  => 1234,
--          file       => "data_perl-5.006001_i686-linux-thread-multi_Storable-0.604.le32",
--          hdrsize    => 13,
--          intsize    => 4,
--          longsize   => 4,
--          major      => 1,
--          netorder   => 0,
--          ptrsize    => 4,
--          version    => 1,
--          version_nv => 1,
-+            byteorder  => 1234,
-+            file       => "data_perl-5.006001_i686-linux-thread-multi_Storable-0.604.le32",
-+            hdrsize    => 13,
-+            intsize    => 4,
-+            longsize   => 4,
-+            major      => 1,
-+            netorder   => 0,
-+            ptrsize    => 4,
-+            version    => 1,
-+            version_nv => 1,
-         },
-     ],
-     [
-         "pst0\3\3\0\0\0\13\1\0\0\4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0...",
-         {
--          file       => "data_perl-5.006001_i686-linux-thread-multi_Storable-0.604.neutral",
--          hdrsize    => 5,
--          major      => 1,
--          netorder   => 1,
--          version    => 1,
--          version_nv => 1,
-+            file       => "data_perl-5.006001_i686-linux-thread-multi_Storable-0.604.neutral",
-+            hdrsize    => 5,
-+            major      => 1,
-+            netorder   => 1,
-+            version    => 1,
-+            version_nv => 1,
-         },
-     ],
-     [
-         "pst0\4\0\x041234\4\4\4\3\13\0\0\0\1\0\4\0\0\0\0\0\0\0\0\0\0...",
-         {
--          byteorder  => 1234,
--          file       => "data_perl-5.006001_i686-linux-thread-multi_Storable-0.700.le32",
--          hdrsize    => 14,
--          intsize    => 4,
--          longsize   => 4,
--          major      => 2,
--          minor      => 0,
--          netorder   => 0,
--          ptrsize    => 4,
--          version    => "2.0",
--          version_nv => "2.000",
-+            byteorder  => 1234,
-+            file       => "data_perl-5.006001_i686-linux-thread-multi_Storable-0.700.le32",
-+            hdrsize    => 14,
-+            intsize    => 4,
-+            longsize   => 4,
-+            major      => 2,
-+            minor      => 0,
-+            netorder   => 0,
-+            ptrsize    => 4,
-+            version    => "2.0",
-+            version_nv => "2.000",
-         },
-     ],
-     [
-         "pst0\5\0\3\0\0\0\13\1\0\0\4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0...",
-         {
--          file       => "data_perl-5.006001_i686-linux-thread-multi_Storable-0.700.neutral",
--          hdrsize    => 6,
--          major      => 2,
--          minor      => 0,
--          netorder   => 1,
--          version    => "2.0",
--          version_nv => "2.000",
-+            file       => "data_perl-5.006001_i686-linux-thread-multi_Storable-0.700.neutral",
-+            hdrsize    => 6,
-+            major      => 2,
-+            minor      => 0,
-+            netorder   => 1,
-+            version    => "2.0",
-+            version_nv => "2.000",
-         },
-     ],
-     [
-         "pst0\4\4\x041234\4\4\4\x08\3\13\0\0\0\1\0\4\0\0\0\0\0\0\0\0\0...",
-         {
--          byteorder  => 1234,
--          file       => "data_perl-5.006001_i686-linux-thread-multi_Storable-1.012.le32",
--          hdrsize    => 15,
--          intsize    => 4,
--          longsize   => 4,
--          major      => 2,
--          minor      => 4,
--          netorder   => 0,
--          nvsize     => 8,
--          ptrsize    => 4,
--          version    => "2.4",
--          version_nv => "2.004",
-+            byteorder  => 1234,
-+            file       => "data_perl-5.006001_i686-linux-thread-multi_Storable-1.012.le32",
-+            hdrsize    => 15,
-+            intsize    => 4,
-+            longsize   => 4,
-+            major      => 2,
-+            minor      => 4,
-+            netorder   => 0,
-+            nvsize     => 8,
-+            ptrsize    => 4,
-+            version    => "2.4",
-+            version_nv => "2.004",
-         },
-     ],
-     [
-         "pst0\4\3\x044321\4\4\4\x08\3\0\0\0\13\1\0\0\4\0\0\0\0\0\0\0\0...",
-         {
--          byteorder  => 4321,
--          file       => "data_perl-5.006001_IA64.ARCHREV_0-thread-multi_Storable-1.006.be32",
--          hdrsize    => 15,
--          intsize    => 4,
--          longsize   => 4,
--          major      => 2,
--          minor      => 3,
--          netorder   => 0,
--          nvsize     => 8,
--          ptrsize    => 4,
--          version    => "2.3",
--          version_nv => "2.003",
-+            byteorder  => 4321,
-+            file       => "data_perl-5.006001_IA64.ARCHREV_0-thread-multi_Storable-1.006.be32",
-+            hdrsize    => 15,
-+            intsize    => 4,
-+            longsize   => 4,
-+            major      => 2,
-+            minor      => 3,
-+            netorder   => 0,
-+            nvsize     => 8,
-+            ptrsize    => 4,
-+            version    => "2.3",
-+            version_nv => "2.003",
-         },
-     ],
-     [
-         "pst0\5\3\3\0\0\0\13\1\0\0\4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0...",
-         {
--          file       => "data_perl-5.006001_IA64.ARCHREV_0-thread-multi_Storable-1.006.neutral",
--          hdrsize    => 6,
--          major      => 2,
--          minor      => 3,
--          netorder   => 1,
--          version    => "2.3",
--          version_nv => "2.003",
-+            file       => "data_perl-5.006001_IA64.ARCHREV_0-thread-multi_Storable-1.006.neutral",
-+            hdrsize    => 6,
-+            major      => 2,
-+            minor      => 3,
-+            netorder   => 1,
-+            version    => "2.3",
-+            version_nv => "2.003",
-         },
-     ],
-     [
-         "pst0\4\4\x044321\4\4\4\x08\3\0\0\0\13\1\0\0\4\0\0\0\0\0\0\0\0...",
-         {
--          byteorder  => 4321,
--          file       => "data_perl-5.006001_IA64.ARCHREV_0-thread-multi_Storable-1.012.be32",
--          hdrsize    => 15,
--          intsize    => 4,
--          longsize   => 4,
--          major      => 2,
--          minor      => 4,
--          netorder   => 0,
--          nvsize     => 8,
--          ptrsize    => 4,
--          version    => "2.4",
--          version_nv => "2.004",
-+            byteorder  => 4321,
-+            file       => "data_perl-5.006001_IA64.ARCHREV_0-thread-multi_Storable-1.012.be32",
-+            hdrsize    => 15,
-+            intsize    => 4,
-+            longsize   => 4,
-+            major      => 2,
-+            minor      => 4,
-+            netorder   => 0,
-+            nvsize     => 8,
-+            ptrsize    => 4,
-+            version    => "2.4",
-+            version_nv => "2.004",
-         },
-     ],
-     [
-         "pst0\5\4\3\0\0\0\13\1\0\0\4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0...",
-         {
--          file       => "data_perl-5.006001_IA64.ARCHREV_0-thread-multi_Storable-1.012.neutral",
--          hdrsize    => 6,
--          major      => 2,
--          minor      => 4,
--          netorder   => 1,
--          version    => "2.4",
--          version_nv => "2.004",
-+            file       => "data_perl-5.006001_IA64.ARCHREV_0-thread-multi_Storable-1.012.neutral",
-+            hdrsize    => 6,
-+            major      => 2,
-+            minor      => 4,
-+            netorder   => 1,
-+            version    => "2.4",
-+            version_nv => "2.004",
-         },
-     ],
-     [
-         "pst0\4\6\x044321\4\4\4\x08\3\0\0\0\13\n\n4294967296...",
-         {
--          byteorder  => 4321,
--          file       => "data_perl-5.008001_darwin-thread-multi-2level_Storable-2.08.be32",
--          hdrsize    => 15,
--          intsize    => 4,
--          longsize   => 4,
--          major      => 2,
--          minor      => 6,
--          netorder   => 0,
--          nvsize     => 8,
--          ptrsize    => 4,
--          version    => "2.6",
--          version_nv => "2.006",
-+            byteorder  => 4321,
-+            file       => "data_perl-5.008001_darwin-thread-multi-2level_Storable-2.08.be32",
-+            hdrsize    => 15,
-+            intsize    => 4,
-+            longsize   => 4,
-+            major      => 2,
-+            minor      => 6,
-+            netorder   => 0,
-+            nvsize     => 8,
-+            ptrsize    => 4,
-+            version    => "2.6",
-+            version_nv => "2.006",
-         },
-     ],
-     [
-         "pst0\5\6\3\0\0\0\13\n\n4294967296\0\0\0\bfour_...",
-         {
--          file       => "data_perl-5.008001_darwin-thread-multi-2level_Storable-2.08.neutral",
--          hdrsize    => 6,
--          major      => 2,
--          minor      => 6,
--          netorder   => 1,
--          version    => "2.6",
--          version_nv => "2.006",
-+            file       => "data_perl-5.008001_darwin-thread-multi-2level_Storable-2.08.neutral",
-+            hdrsize    => 6,
-+            major      => 2,
-+            minor      => 6,
-+            netorder   => 1,
-+            version    => "2.6",
-+            version_nv => "2.006",
-         },
-     ],
-     [
-         "pst0\4\6\x044321\4\4\4\x08\3\0\0\0\13\4\3\0\0\0\0\0\0\0\nem...",
-         {
--          byteorder  => 4321,
--          file       => "data_perl-5.008003_PA-RISC1.1-thread-multi_Storable-2.09.be32",
--          hdrsize    => 15,
--          intsize    => 4,
--          longsize   => 4,
--          major      => 2,
--          minor      => 6,
--          netorder   => 0,
--          nvsize     => 8,
--          ptrsize    => 4,
--          version    => "2.6",
--          version_nv => "2.006",
-+            byteorder  => 4321,
-+            file       => "data_perl-5.008003_PA-RISC1.1-thread-multi_Storable-2.09.be32",
-+            hdrsize    => 15,
-+            intsize    => 4,
-+            longsize   => 4,
-+            major      => 2,
-+            minor      => 6,
-+            netorder   => 0,
-+            nvsize     => 8,
-+            ptrsize    => 4,
-+            version    => "2.6",
-+            version_nv => "2.006",
-         },
-     ],
-     [
-         "pst0\5\6\3\0\0\0\13\4\3\0\0\0\0\0\0\0\nempty_hash\n...",
-         {
--          file       => "data_perl-5.008003_PA-RISC1.1-thread-multi_Storable-2.09.neutral",
--          hdrsize    => 6,
--          major      => 2,
--          minor      => 6,
--          netorder   => 1,
--          version    => "2.6",
--          version_nv => "2.006",
-+            file       => "data_perl-5.008003_PA-RISC1.1-thread-multi_Storable-2.09.neutral",
-+            hdrsize    => 6,
-+            major      => 2,
-+            minor      => 6,
-+            netorder   => 1,
-+            version    => "2.6",
-+            version_nv => "2.006",
-         },
-     ],
-     [
-         "pst0\4\6\x0812345678\4\4\4\x08\3\13\0\0\0\4\3\0\0\0\0\n\0...",
-         {
--          byteorder  => 12_345_678,
--          file       => "data_perl-5.008004_i86pc-solaris-64int_Storable-2.12.le64",
--          hdrsize    => 19,
--          intsize    => 4,
--          longsize   => 4,
--          major      => 2,
--          minor      => 6,
--          netorder   => 0,
--          nvsize     => 8,
--          ptrsize    => 4,
--          version    => "2.6",
--          version_nv => "2.006",
-+            byteorder  => 12_345_678,
-+            file       => "data_perl-5.008004_i86pc-solaris-64int_Storable-2.12.le64",
-+            hdrsize    => 19,
-+            intsize    => 4,
-+            longsize   => 4,
-+            major      => 2,
-+            minor      => 6,
-+            netorder   => 0,
-+            nvsize     => 8,
-+            ptrsize    => 4,
-+            version    => "2.6",
-+            version_nv => "2.006",
-         },
-     ],
-     [
-         "pst0\4\6\x041234\4\4\4\x08\3\13\0\0\0\4\3\0\0\0\0\n\0\0\0em...",
-         {
--          byteorder  => 1234,
--          file       => "data_perl-5.008006_i686-linux-thread-multi_Storable-2.13.le32",
--          hdrsize    => 15,
--          intsize    => 4,
--          longsize   => 4,
--          major      => 2,
--          minor      => 6,
--          netorder   => 0,
--          nvsize     => 8,
--          ptrsize    => 4,
--          version    => "2.6",
--          version_nv => "2.006",
-+            byteorder  => 1234,
-+            file       => "data_perl-5.008006_i686-linux-thread-multi_Storable-2.13.le32",
-+            hdrsize    => 15,
-+            intsize    => 4,
-+            longsize   => 4,
-+            major      => 2,
-+            minor      => 6,
-+            netorder   => 0,
-+            nvsize     => 8,
-+            ptrsize    => 4,
-+            version    => "2.6",
-+            version_nv => "2.006",
-         },
-     ],
-     [
-         "pst0\4\6\x0887654321\4\x08\x08\x08\3\0\0\0\13\4\3\0\0\0\0\0\0...",
-         {
--          byteorder  => 87_654_321,
--          file       => "data_perl-5.008007_IA64.ARCHREV_0-thread-multi-LP64_Storable-2.13.be64",
--          hdrsize    => 19,
--          intsize    => 4,
--          longsize   => 8,
--          major      => 2,
--          minor      => 6,
--          netorder   => 0,
--          nvsize     => 8,
--          ptrsize    => 8,
--          version    => "2.6",
--          version_nv => "2.006",
-+            byteorder  => 87_654_321,
-+            file       => "data_perl-5.008007_IA64.ARCHREV_0-thread-multi-LP64_Storable-2.13.be64",
-+            hdrsize    => 19,
-+            intsize    => 4,
-+            longsize   => 8,
-+            major      => 2,
-+            minor      => 6,
-+            netorder   => 0,
-+            nvsize     => 8,
-+            ptrsize    => 8,
-+            version    => "2.6",
-+            version_nv => "2.006",
-         },
-     ],
-     [
-         "pst0\4\x07\x0812345678\4\x08\x08\x08\3\13\0\0\0\4\3\0\0\0\0\n\0...",
-         {
--          byteorder  => 12_345_678,
--          file       => "data_perl-5.008007_x86-solaris-thread-multi-64_Storable-2.15.le64",
--          hdrsize    => 19,
--          intsize    => 4,
--          longsize   => 8,
--          major      => 2,
--          minor      => 7,
--          netorder   => 0,
--          nvsize     => 8,
--          ptrsize    => 8,
--          version    => "2.7",
--          version_nv => "2.007",
-+            byteorder  => 12_345_678,
-+            file       => "data_perl-5.008007_x86-solaris-thread-multi-64_Storable-2.15.le64",
-+            hdrsize    => 19,
-+            intsize    => 4,
-+            longsize   => 8,
-+            major      => 2,
-+            minor      => 7,
-+            netorder   => 0,
-+            nvsize     => 8,
-+            ptrsize    => 8,
-+            version    => "2.7",
-+            version_nv => "2.007",
-         },
-     ],
-     [
-         "pst0\5\x07\3\0\0\0\13\4\3\0\0\0\0\0\0\0\nempty_hash\n...",
-         {
--          file       => "data_perl-5.008007_x86-solaris-thread-multi-64_Storable-2.15.neutral",
--          hdrsize    => 6,
--          major      => 2,
--          minor      => 7,
--          netorder   => 1,
--          version    => "2.7",
--          version_nv => "2.007",
-+            file       => "data_perl-5.008007_x86-solaris-thread-multi-64_Storable-2.15.neutral",
-+            hdrsize    => 6,
-+            major      => 2,
-+            minor      => 7,
-+            netorder   => 1,
-+            version    => "2.7",
-+            version_nv => "2.007",
-         },
-     ],
-     [
-         "pst0\4\5\x041234\4\4\4\x08\3\13\0\0\0\4\3\0\0\0\0\n\0\0\0em...",
-         {
--          byteorder  => 1234,
--          file       => "data_perl-5.008_i686-linux-thread-multi_Storable-2.04.le32",
--          hdrsize    => 15,
--          intsize    => 4,
--          longsize   => 4,
--          major      => 2,
--          minor      => 5,
--          netorder   => 0,
--          nvsize     => 8,
--          ptrsize    => 4,
--          version    => "2.5",
--          version_nv => "2.005",
-+            byteorder  => 1234,
-+            file       => "data_perl-5.008_i686-linux-thread-multi_Storable-2.04.le32",
-+            hdrsize    => 15,
-+            intsize    => 4,
-+            longsize   => 4,
-+            major      => 2,
-+            minor      => 5,
-+            netorder   => 0,
-+            nvsize     => 8,
-+            ptrsize    => 4,
-+            version    => "2.5",
-+            version_nv => "2.005",
-         },
-     ],
-     [
-         "pst0\5\5\3\0\0\0\13\4\3\0\0\0\0\0\0\0\nempty_hash\n...",
-         {
--          file       => "data_perl-5.008_i686-linux-thread-multi_Storable-2.04.neutral",
--          hdrsize    => 6,
--          major      => 2,
--          minor      => 5,
--          netorder   => 1,
--          version    => "2.5",
--          version_nv => "2.005",
-+            file       => "data_perl-5.008_i686-linux-thread-multi_Storable-2.04.neutral",
-+            hdrsize    => 6,
-+            major      => 2,
-+            minor      => 5,
-+            netorder   => 1,
-+            version    => "2.5",
-+            version_nv => "2.005",
-         },
-     ],
-     [
-         "pst0\4\x07\x041234\4\4\4\x08\3\13\0\0\0\4\3\0\0\0\0\n\0\0\0em...",
-         {
--          byteorder  => 1234,
--          file       => "data_perl-5.009003_i686-linux_Storable-2.15.le32",
--          hdrsize    => 15,
--          intsize    => 4,
--          longsize   => 4,
--          major      => 2,
--          minor      => 7,
--          netorder   => 0,
--          nvsize     => 8,
--          ptrsize    => 4,
--          version    => "2.7",
--          version_nv => "2.007",
-+            byteorder  => 1234,
-+            file       => "data_perl-5.009003_i686-linux_Storable-2.15.le32",
-+            hdrsize    => 15,
-+            intsize    => 4,
-+            longsize   => 4,
-+            major      => 2,
-+            minor      => 7,
-+            netorder   => 0,
-+            nvsize     => 8,
-+            ptrsize    => 4,
-+            version    => "2.7",
-+            version_nv => "2.007",
-         },
-     ],
- );
-@@ -408,8 +406,8 @@ store({}, $file);
-     ok(!$info->{netorder}, "no netorder");
- 
-     my %attrs = (
--        nvsize  => 5.006, 
--        ptrsize => 5.005, 
-+        nvsize  => 5.006,
-+        ptrsize => 5.005,
-         map {$_ => 5.004} qw(byteorder intsize longsize)
-     );
-     for my $attr (keys %attrs) {
-@@ -435,7 +433,7 @@ nstore({}, $file);
- 
-     ok($info->{netorder}, "no netorder");
-     for (qw(byteorder intsize longsize ptrsize nvsize)) {
--	ok(!exists $info->{$_}, "no $_");
-+        ok(!exists $info->{$_}, "no $_");
-     }
- }
- 
-diff --git a/t/flags.t b/t/flags.t
-index e648f7a..ed376d1 100644
---- a/t/flags.t
-+++ b/t/flags.t
-@@ -1,103 +1,103 @@
- #!./perl
- 
-+use strict;
-+use warnings;
-+
- use Test::More tests => 16;
- 
- use Storable ();
- 
--use warnings;
--use strict;
--
- package TEST;
- 
- sub make {
--	my $pkg = shift;
--	return bless { a => 1, b => 2 }, $pkg;
-+    my $pkg = shift;
-+    return bless { a => 1, b => 2 }, $pkg;
- }
- 
- package TIED_HASH;
- 
- sub TIEHASH {
--	my $pkg = shift;
--	return bless { a => 1, b => 2 }, $pkg;
-+    my $pkg = shift;
-+    return bless { a => 1, b => 2 }, $pkg;
- }
- 
- sub FETCH {
--	my ($self, $key) = @_;
--	return $self->{$key};
-+    my ($self, $key) = @_;
-+    return $self->{$key};
- }
- 
- sub STORE {
--	my ($self, $key, $value) = @_;
--	$self->{$key} = $value;
-+    my ($self, $key, $value) = @_;
-+    $self->{$key} = $value;
- }
- 
- sub FIRSTKEY {
--	my $self = shift;
--	keys %$self;
--	return each %$self;
-+    my $self = shift;
-+    keys %$self;
-+    return each %$self;
- }
- 
- sub NEXTKEY {
--	my $self = shift;
--	return each %{$self};
-+    my $self = shift;
-+    return each %{$self};
- }
- 
- sub EXISTS {
--	my ($self, $key) = @_;
--	return exists $self->{$key};
-+    my ($self, $key) = @_;
-+    return exists $self->{$key};
- }
- 
- package main;
- 
- {
--	my $obj = TEST->make;
--
--	is_deeply($obj, { a => 1, b => 2 }, "object contains correct data");
--
--	my $frozen = Storable::freeze($obj);
--	my ($t1, $t2) = Storable::thaw($frozen);
--
--	{
--		no warnings 'once';
--		local $Storable::flags = Storable::FLAGS_COMPAT();
--		$t2 = Storable::thaw($frozen);
--	}
--
--	is_deeply($t1, $t2, "objects contain matching data");
--	is(ref $t1, 'TEST', "default object is blessed");
--	is(ref $t2, 'TEST', "compat object is blessed into correct class");
--
--	my $t3 = Storable::thaw($frozen, Storable::FLAGS_COMPAT());
--	is_deeply($t2, $t3, "objects contain matching data (explicit test)");
--	is(ref $t3, 'TEST', "compat object is blessed into correct class (explicit test)");
--
--	my $t4 = Storable::thaw($frozen, Storable::BLESS_OK());
--	is_deeply($t2, $t3, "objects contain matching data (explicit test for bless)");
--	is(ref $t3, 'TEST', "compat object is blessed into correct class (explicit test for bless)");
--
--	{
--		no warnings 'once';
--		local $Storable::flags = Storable::FLAGS_COMPAT();
--		my $t5 = Storable::thaw($frozen, 0);
--		my $t6 = Storable::thaw($frozen, Storable::TIE_OK());
--
--		is_deeply($t1, $t5, "objects contain matching data");
--		is_deeply($t1, $t6, "objects contain matching data for TIE_OK");
--		is(ref $t5, 'HASH', "default object is unblessed");
--		is(ref $t6, 'HASH', "TIE_OK object is unblessed");
--	}
-+    my $obj = TEST->make;
-+
-+    is_deeply($obj, { a => 1, b => 2 }, "object contains correct data");
-+
-+    my $frozen = Storable::freeze($obj);
-+    my ($t1, $t2) = Storable::thaw($frozen);
-+
-+    {
-+        no warnings 'once';
-+        local $Storable::flags = Storable::FLAGS_COMPAT();
-+        $t2 = Storable::thaw($frozen);
-+    }
-+
-+    is_deeply($t1, $t2, "objects contain matching data");
-+    is(ref $t1, 'TEST', "default object is blessed");
-+    is(ref $t2, 'TEST', "compat object is blessed into correct class");
-+
-+    my $t3 = Storable::thaw($frozen, Storable::FLAGS_COMPAT());
-+    is_deeply($t2, $t3, "objects contain matching data (explicit test)");
-+    is(ref $t3, 'TEST', "compat object is blessed into correct class (explicit test)");
-+
-+    my $t4 = Storable::thaw($frozen, Storable::BLESS_OK());
-+    is_deeply($t2, $t3, "objects contain matching data (explicit test for bless)");
-+    is(ref $t3, 'TEST', "compat object is blessed into correct class (explicit test for bless)");
-+
-+    {
-+        no warnings 'once';
-+        local $Storable::flags = Storable::FLAGS_COMPAT();
-+        my $t5 = Storable::thaw($frozen, 0);
-+        my $t6 = Storable::thaw($frozen, Storable::TIE_OK());
-+
-+        is_deeply($t1, $t5, "objects contain matching data");
-+        is_deeply($t1, $t6, "objects contain matching data for TIE_OK");
-+        is(ref $t5, 'HASH', "default object is unblessed");
-+        is(ref $t6, 'HASH', "TIE_OK object is unblessed");
-+    }
- }
- 
- {
--	tie my %hash, 'TIED_HASH';
--	ok(tied %hash, "hash is tied");
--	my $obj = { bow => \%hash };
-+    tie my %hash, 'TIED_HASH';
-+    ok(tied %hash, "hash is tied");
-+    my $obj = { bow => \%hash };
- 
--	my $frozen = Storable::freeze($obj);
--	my $t1 = Storable::thaw($frozen, Storable::FLAGS_COMPAT());
--	my $t2 = eval { Storable::thaw($frozen); };
-+    my $frozen = Storable::freeze($obj);
-+    my $t1 = Storable::thaw($frozen, Storable::FLAGS_COMPAT());
-+    my $t2 = eval { Storable::thaw($frozen); };
- 
--	ok(!$@, "trying to thaw a tied value succeeds");
--	ok(tied %{$t1->{bow}}, "compat object is tied");
--	is(ref tied %{$t1->{bow}}, 'TIED_HASH', "compat object is tied into correct class");
-+    ok(!$@, "trying to thaw a tied value succeeds");
-+    ok(tied %{$t1->{bow}}, "compat object is tied");
-+    is(ref tied %{$t1->{bow}}, 'TIED_HASH', "compat object is tied into correct class");
- }
-diff --git a/t/forgive.t b/t/forgive.t
-index 1833a26..b3775ed 100644
---- a/t/forgive.t
-+++ b/t/forgive.t
-@@ -1,7 +1,7 @@
- #!./perl
- #
- #  Copyright (c) 1995-2000, Raphael Manfredi
--#  
-+#
- #  You may redistribute only under the same terms as Perl 5, as specified
- #  in the README file that comes with the distribution.
- #
-@@ -9,26 +9,13 @@
- # (C) Copyright 1997, Universitat Dortmund, all rights reserved.
- #
- 
--sub BEGIN {
--    unshift @INC, 't';
--    unshift @INC, 't/compat' if $] < 5.006002;
--    require Config; import Config;
--    if ($ENV{PERL_CORE} and $Config{'extensions'} !~ /\bStorable\b/) {
--        print "1..0 # Skip: Storable was not built\n";
--        exit 0;
--    }
--}
-+use strict;
-+use warnings;
- 
- use Storable qw(store retrieve);
- use Test::More;
- 
--# problems with 5.00404 when in an BEGIN block, so this is defined here
--if (!eval { require File::Spec; 1 } || $File::Spec::VERSION < 0.8) {
--    plan(skip_all => "File::Spec 0.8 needed");
--    # Mention $File::Spec::VERSION again, as 5.00503's harness seems to have
--    # warnings on.
--    exit $File::Spec::VERSION;
--}
-+use File::Spec;
- 
- plan(tests => 8);
- 
-@@ -45,8 +32,8 @@ $Storable::forgive_me=1;
- my $devnull = File::Spec->devnull;
- 
- open(SAVEERR, ">&STDERR");
--open(STDERR, '>', $devnull) or 
--  ( print SAVEERR "Unable to redirect STDERR: $!\n" and exit(1) );
-+open(STDERR, '>', $devnull) or
-+    ( print SAVEERR "Unable to redirect STDERR: $!\n" and exit(1) );
- 
- eval {$result = store ($bad , "store$$")};
- 
-diff --git a/t/freeze.t b/t/freeze.t
-index 1dbac0c..52a5da7 100644
---- a/t/freeze.t
-+++ b/t/freeze.t
-@@ -1,97 +1,94 @@
- #!./perl
- #
- #  Copyright (c) 1995-2000, Raphael Manfredi
--#  
-+#
- #  You may redistribute only under the same terms as Perl 5, as specified
- #  in the README file that comes with the distribution.
- #
- 
-+use strict;
-+use warnings;
-+
- sub BEGIN {
--    unshift @INC, 't';
--    unshift @INC, 't/compat' if $] < 5.006002;
--    require Config; import Config;
--    if ($ENV{PERL_CORE} and $Config{'extensions'} !~ /\bStorable\b/) {
--        print "1..0 # Skip: Storable was not built\n";
--        exit 0;
--    }
--    require 'st-dump.pl';
-+    unshift @INC, 't/lib';
- }
- 
-+use STDump;
- use Storable qw(freeze nfreeze thaw);
- 
- $Storable::flags = Storable::FLAGS_COMPAT;
- 
- use Test::More tests => 21;
- 
--$a = 'toto';
--$b = \$a;
--$c = bless {}, CLASS;
-+my $a = 'toto';
-+my $b = \$a;
-+my $c = bless {}, 'CLASS';
- $c->{attribute} = $b;
--$d = {};
--$e = [];
-+my $d = {};
-+my $e = [];
- $d->{'a'} = $e;
- $e->[0] = $d;
--%a = ('key', 'value', 1, 0, $a, $b, 'cvar', \$c);
--@a = ('first', undef, 3, -4, -3.14159, 456, 4.5, $d, \$d, \$e, $e,
--	$b, \$a, $a, $c, \$c, \%a);
-+my %a = ('key', 'value', 1, 0, $a, $b, 'cvar', \$c);
-+my @a = ('first', undef, 3, -4, -3.14159, 456, 4.5, $d, \$d, \$e, $e,
-+    $b, \$a, $a, $c, \$c, \%a);
- 
- my $f1 = freeze(\@a);
- isnt($f1, undef);
- 
--$dumped = &dump(\@a);
-+my $dumped = stdump(\@a);
- isnt($dumped, undef);
- 
--$root = thaw($f1);
-+my $root = thaw($f1);
- isnt($root, undef);
- 
--$got = &dump($root);
-+my $got = stdump($root);
- isnt($got, undef);
- 
- is($got, $dumped);
- 
--package FOO; @ISA = qw(Storable);
-+package FOO; our @ISA = qw(Storable);
- 
- sub make {
--	my $self = bless {};
--	$self->{key} = \%main::a;
--	return $self;
-+    my $self = bless {};
-+    $self->{key} = \%a;
-+    return $self;
- };
- 
- package main;
- 
--$foo = FOO->make;
-+my $foo = FOO->make;
- my $f2 = $foo->freeze;
- isnt($f2, undef);
- 
- my $f3 = $foo->nfreeze;
- isnt($f3, undef);
- 
--$root3 = thaw($f3);
-+my $root3 = thaw($f3);
- isnt($root3, undef);
- 
--is(&dump($foo), &dump($root3));
-+is(stdump($foo), stdump($root3));
- 
- $root = thaw($f2);
--is(&dump($foo), &dump($root));
-+is(stdump($foo), stdump($root));
- 
--is(&dump($root3), &dump($root));
-+is(stdump($root3), stdump($root));
- 
--$other = freeze($root);
-+my $other = freeze($root);
- is(length$other, length $f2);
- 
--$root2 = thaw($other);
--is(&dump($root2), &dump($root));
-+my $root2 = thaw($other);
-+is(stdump($root2), stdump($root));
- 
--$VAR1 = [
--	'method',
--	1,
--	'prepare',
--	'SELECT table_name, table_owner, num_rows FROM iitables
--                  where table_owner != \'$ingres\' and table_owner != \'DBA\''
-+my $VAR1 = [
-+    'method',
-+    1,
-+    'prepare',
-+    'SELECT table_name, table_owner, num_rows FROM iitables
-+        where table_owner != \'$ingres\' and table_owner != \'DBA\''
- ];
- 
--$x = nfreeze($VAR1);
--$VAR2 = thaw($x);
-+my $x = nfreeze($VAR1);
-+my $VAR2 = thaw($x);
- is($VAR2->[3], $VAR1->[3]);
- 
- # Test the workaround for LVALUE bug in perl 5.004_04 -- from Gisle Aas
-@@ -105,14 +102,14 @@ is($@, '');
- my $thaw_me = 'asdasdasdasd';
- 
- eval {
--	my $thawed = thaw $thaw_me;
-+    my $thawed = thaw $thaw_me;
- };
- isnt($@, '');
- 
- my %to_be_frozen = (foo => 'bar');
- my $frozen;
- eval {
--	$frozen = freeze \%to_be_frozen;
-+    $frozen = freeze \%to_be_frozen;
- };
- is($@, '');
- 
-@@ -121,7 +118,7 @@ eval { thaw $thaw_me };
- eval { $frozen = freeze { foo => {} } };
- is($@, '');
- 
--thaw $frozen;			# used to segfault here
-+thaw $frozen;                   # used to segfault here
- pass("Didn't segfault");
- 
- SKIP: {
-diff --git a/t/huge.t b/t/huge.t
-index 09b173e..d2bbf15 100644
---- a/t/huge.t
-+++ b/t/huge.t
-@@ -8,8 +8,6 @@ use Storable qw(dclone);
- use Test::More;
- 
- BEGIN {
--    plan skip_all => 'Storable was not built'
--        if $ENV{PERL_CORE} && $Config{'extensions'} !~ /\b Storable \b/x;
-     plan skip_all => 'Need 64-bit pointers for this test'
-         if $Config{ptrsize} < 8 and $] > 5.013;
-     plan skip_all => 'Need 64-bit int for this test on older versions'
-@@ -23,8 +21,8 @@ my $huge = int(2 ** 31);
- # v5.24.1c/v5.25.1c switched to die earlier with "Too many elements",
- # which is much safer.
- my $has_too_many = ($Config{usecperl} and
--      (($] >= 5.024001 and $] < 5.025000)
--       or $] >= 5.025001)) ? 1 : 0;
-+    (($] >= 5.024001 and $] < 5.025000)
-+    or $] >= 5.025001)) ? 1 : 0;
- 
- # These overlarge sizes are enabled only since Storable 3.00 and some
- # cases need cperl support. Perl5 (as of 5.24) has some internal
-@@ -40,28 +38,35 @@ my $has_too_many = ($Config{usecperl} and
- #    U32     5.25c -
- # hash key: I32
- 
--my @cases = (
--    ['huge string',
--     sub { my $s = 'x' x $huge; \$s }],
-+my @cases;
-+    [
-+        'huge string',
-+        sub { my $s = 'x' x $huge; \$s }
-+    ],
- 
--    ['array with huge element',
--     sub { my $s = 'x' x $huge; [$s] }],
-+    [
-+        'array with huge element',
-+        sub { my $s = 'x' x $huge; [$s] }
-+    ],
- 
--    ['hash with huge value',
--     sub { my $s = 'x' x $huge; +{ foo => $s } }],
-+    [
-+        'hash with huge value',
-+        sub { my $s = 'x' x $huge; +{ foo => $s } }
-+    ],
- 
-     # There's no huge key, limited to I32.
--  ) if $Config{ptrsize} > 4;
-+) if $Config{ptrsize} > 4;
- 
- 
- # An array with a huge number of elements requires several gigabytes of
- # virtual memory. On darwin it is evtl killed.
- if ($Config{ptrsize} > 4 and !$has_too_many) {
--    # needs 20-55G virtual memory, 4.6M heap and several minutes on a fast machine 
-+    # needs 20-55G virtual memory, 4.6M heap and several minutes on a fast machine
-     if ($ENV{PERL_TEST_MEMORY} >= 55) {
--        push @cases,
--          [ 'huge array',
--            sub { my @x; $x[$huge] = undef; \@x } ];
-+        push @cases, [
-+            'huge array',
-+            sub { my @x; $x[$huge] = undef; \@x }
-+        ];
-     } else {
-         diag "skip huge array, need PERL_TEST_MEMORY >= 55";
-     }
-@@ -74,9 +79,10 @@ if (!$has_too_many) {
-     # needs >90G virtual mem, and is evtl. killed
-     if ($ENV{PERL_TEST_MEMORY} >= 96) {
-         # number of keys >I32. impossible to handle with perl5, but Storable can.
--        push @cases,
--          ['huge hash',
--           sub { my %x = (0 .. $huge); \%x } ];
-+        push @cases, [
-+            'huge hash',
-+            sub { my %x = (0 .. $huge); \%x }
-+        ];
-     } else {
-         diag "skip huge hash, need PERL_TEST_MEMORY >= 96";
-     }
-diff --git a/t/hugeids.t b/t/hugeids.t
-index c0e19ae..fd8663e 100644
---- a/t/hugeids.t
-+++ b/t/hugeids.t
-@@ -15,8 +15,6 @@ use File::Temp qw(tempfile);
- use File::Spec;
- 
- BEGIN {
--    plan skip_all => 'Storable was not built'
--        if $ENV{PERL_CORE} && $Config{'extensions'} !~ /\b Storable \b/x;
-     plan skip_all => 'Need 64-bit pointers for this test'
-         if $Config{ptrsize} < 8 and $] > 5.013;
-     plan skip_all => 'Need 64-bit int for this test on older versions'
-@@ -39,185 +37,178 @@ plan tests => 12;
- my $skips = $ENV{PERL_STORABLE_SKIP_ID_TEST} || '';
- my $keeps = $ENV{PERL_STORABLE_KEEP_ID_TEST};
- 
--freeze_thaw_test
--  (
--   name => "object ids between 2G and 4G",
--   freeze => \&make_2g_data,
--   thaw => \&check_2g_data,
--   id => "2g",
--   memory => 34,
--  );
--
--freeze_thaw_test
--  (
--   name => "object ids over 4G",
--   freeze => \&make_4g_data,
--   thaw => \&check_4g_data,
--   id => "4g",
--   memory => 70,
--  );
--
--freeze_thaw_test
--  (
--   name => "hook object ids over 4G",
--   freeze => \&make_hook_data,
--   thaw => \&check_hook_data,
--   id => "hook4g",
--   memory => 70,
--  );
-+freeze_thaw_test(
-+    name => "object ids between 2G and 4G",
-+    freeze => \&make_2g_data,
-+    thaw => \&check_2g_data,
-+    id => "2g",
-+    memory => 34,
-+);
-+
-+freeze_thaw_test(
-+    name => "object ids over 4G",
-+    freeze => \&make_4g_data,
-+    thaw => \&check_4g_data,
-+    id => "4g",
-+    memory => 70,
-+);
-+
-+freeze_thaw_test(
-+    name => "hook object ids over 4G",
-+    freeze => \&make_hook_data,
-+    thaw => \&check_hook_data,
-+    id => "hook4g",
-+    memory => 70,
-+);
- 
- # not really an id test, but the infrastructure here makes tests
- # easier
--freeze_thaw_test
--  (
--   name => "network store large PV",
--   freeze => \&make_net_large_pv,
--   thaw => \&check_net_large_pv,
--   id => "netlargepv",
--   memory => 8,
--  );
--
--freeze_thaw_test
--    (
--     name => "hook store with 2g data",
--     freeze => \&make_2g_hook_data,
--     thaw => \&check_2g_hook_data,
--     id => "hook2gdata",
--     memory => 4,
--    );
--
--freeze_thaw_test
--    (
--     name => "hook store with 4g data",
--     freeze => \&make_4g_hook_data,
--     thaw => \&check_4g_hook_data,
--     id => "hook4gdata",
--     memory => 8,
--    );
-+freeze_thaw_test(
-+    name => "network store large PV",
-+    freeze => \&make_net_large_pv,
-+    thaw => \&check_net_large_pv,
-+    id => "netlargepv",
-+    memory => 8,
-+);
-+
-+freeze_thaw_test(
-+    name => "hook store with 2g data",
-+    freeze => \&make_2g_hook_data,
-+    thaw => \&check_2g_hook_data,
-+    id => "hook2gdata",
-+    memory => 4,
-+);
-+
-+freeze_thaw_test(
-+    name => "hook store with 4g data",
-+    freeze => \&make_4g_hook_data,
-+    thaw => \&check_4g_hook_data,
-+    id => "hook4gdata",
-+    memory => 8,
-+);
- 
- sub freeze_thaw_test {
-     my %opts = @_;
- 
-     my $freeze = $opts{freeze}
--      or die "Missing freeze";
-+        or die "Missing freeze";
-     my $thaw = $opts{thaw}
--      or die "Missing thaw";
-+        or die "Missing thaw";
-     my $id = $opts{id}
--      or die "Missing id";
-+        or die "Missing id";
-     my $name = $opts{name}
--      or die "Missing name";
-+        or die "Missing name";
-     my $memory = $opts{memory}
--      or die "Missing memory";
-+        or die "Missing memory";
-     my $todo_thaw = $opts{todo_thaw} || "";
- 
--  SKIP:
--    {
--	# IPC::Run would be handy here
-+    SKIP: {
-+        # IPC::Run would be handy here
- 
--	$ENV{PERL_TEST_MEMORY} >= $memory
--	  or skip "Not enough memory to test $name", 2;
--	$skips =~ /\b\Q$id\E\b/
--	  and skip "You requested test $name ($id) be skipped", 2;
-+        $ENV{PERL_TEST_MEMORY} >= $memory
-+            or skip "Not enough memory to test $name", 2;
-+        $skips =~ /\b\Q$id\E\b/
-+            and skip "You requested test $name ($id) be skipped", 2;
-         defined $keeps && $keeps !~ /\b\Q$id\E\b/
-             and skip "You didn't request test $name ($id)", 2;
--	my $stored;
--	if (defined(my $pid = open(my $fh, "-|"))) {
--	    unless ($pid) {
--		# child
--		open my $cfh, "|-", "gzip"
--		  or die "Cannot pipe to gzip: $!";
--		binmode $cfh;
--		$freeze->($cfh);
--		exit;
--	    }
--	    # parent
--	    $stored = do { local $/; <$fh> };
--	    close $fh;
--	}
--	else {
--	    skip "$name: Cannot fork for freeze", 2;
--	}
--	ok($stored, "$name: we got output data")
--	  or skip "$name: skipping thaw test", 1;
--
--	my ($tfh, $tname) = tempfile();
--
--	#my $tname = "$id.store.gz";
--	#open my $tfh, ">", $tname or die;
--	#binmode $tfh;
--
--	print $tfh $stored;
--	close $tfh;
--    
--	if (defined(my $pid = open(my $fh, "-|"))) {
--	    unless ($pid) {
--		# child
--		open my $bfh, "-|", "gunzip <$tname"
--		  or die "Cannot pipe from gunzip: $!";
--		binmode $bfh;
--		$thaw->($bfh);
--		exit;
--	    }
--	    my $out = do { local $/; <$fh> };
--	    chomp $out;
--	    local $TODO = $todo_thaw;
--	    is($out, "OK", "$name: check result");
--	}
--	else {
--	    skip "$name: Cannot fork for thaw", 1;
--	}
-+        my $stored;
-+        if (defined(my $pid = open(my $fh, "-|"))) {
-+            unless ($pid) {
-+                # child
-+                open my $cfh, "|-", "gzip"
-+                    or die "Cannot pipe to gzip: $!";
-+                binmode $cfh;
-+                $freeze->($cfh);
-+                exit;
-+            }
-+            # parent
-+            $stored = do { local $/; <$fh> };
-+            close $fh;
-+        }
-+        else {
-+            skip "$name: Cannot fork for freeze", 2;
-+        }
-+        ok($stored, "$name: we got output data")
-+            or skip "$name: skipping thaw test", 1;
-+
-+        my ($tfh, $tname) = tempfile();
-+
-+        #my $tname = "$id.store.gz";
-+        #open my $tfh, ">", $tname or die;
-+        #binmode $tfh;
-+
-+        print $tfh $stored;
-+        close $tfh;
-+
-+        if (defined(my $pid = open(my $fh, "-|"))) {
-+            unless ($pid) {
-+                # child
-+                open my $bfh, "-|", "gunzip <$tname"
-+                    or die "Cannot pipe from gunzip: $!";
-+                binmode $bfh;
-+                $thaw->($bfh);
-+                exit;
-+            }
-+            my $out = do { local $/; <$fh> };
-+            chomp $out;
-+            local $TODO = $todo_thaw;
-+            is($out, "OK", "$name: check result");
-+        }
-+        else {
-+            skip "$name: Cannot fork for thaw", 1;
-+        }
-     }
- }
- 
- 
- sub make_2g_data {
--  my ($fh) = @_;
--  my @x;
--  my $y = 1;
--  my $z = 2;
--  my $g2 = 0x80000000;
--  $x[0] = \$y;
--  $x[$g2] = \$y;
--  $x[$g2+1] = \$z;
--  $x[$g2+2] = \$z;
--  store_fd(\@x, $fh);
-+    my ($fh) = @_;
-+    my @x;
-+    my $y = 1;
-+    my $z = 2;
-+    my $g2 = 0x80000000;
-+    $x[0] = \$y;
-+    $x[$g2] = \$y;
-+    $x[$g2+1] = \$z;
-+    $x[$g2+2] = \$z;
-+    store_fd(\@x, $fh);
- }
- 
- sub check_2g_data {
--  my ($fh) = @_;
--  my $x = retrieve_fd($fh);
--  my $g2 = 0x80000000;
--  $x->[0] == $x->[$g2]
--    or die "First entry mismatch";
--  $x->[$g2+1] == $x->[$g2+2]
--    or die "2G+ entry mismatch";
--  print "OK";
-+    my ($fh) = @_;
-+    my $x = retrieve_fd($fh);
-+    my $g2 = 0x80000000;
-+    $x->[0] == $x->[$g2]
-+        or die "First entry mismatch";
-+    $x->[$g2+1] == $x->[$g2+2]
-+        or die "2G+ entry mismatch";
-+    print "OK";
- }
- 
- sub make_4g_data {
--  my ($fh) = @_;
--  my @x;
--  my $y = 1;
--  my $z = 2;
--  my $g4 = 2*0x80000000;
--  $x[0] = \$y;
--  $x[$g4] = \$y;
--  $x[$g4+1] = \$z;
--  $x[$g4+2] = \$z;
--  store_fd(\@x, $fh);
-+    my ($fh) = @_;
-+    my @x;
-+    my $y = 1;
-+    my $z = 2;
-+    my $g4 = 2*0x80000000;
-+    $x[0] = \$y;
-+    $x[$g4] = \$y;
-+    $x[$g4+1] = \$z;
-+    $x[$g4+2] = \$z;
-+    store_fd(\@x, $fh);
- }
- 
- sub check_4g_data {
--  my ($fh) = @_;
--  my $x = retrieve_fd($fh);
--  my $g4 = 2*0x80000000;
--  $x->[0] == $x->[$g4]
--    or die "First entry mismatch";
--  $x->[$g4+1] == $x->[$g4+2]
--    or die "4G+ entry mismatch";
--  ${$x->[$g4+1]} == 2
--    or die "Incorrect value in 4G+ entry";
--  print "OK";
-+    my ($fh) = @_;
-+    my $x = retrieve_fd($fh);
-+    my $g4 = 2*0x80000000;
-+    $x->[0] == $x->[$g4]
-+        or die "First entry mismatch";
-+    $x->[$g4+1] == $x->[$g4+2]
-+        or die "4G+ entry mismatch";
-+    ${$x->[$g4+1]} == 2
-+        or die "Incorrect value in 4G+ entry";
-+    print "OK";
- }
- 
- sub make_hook_data {
-@@ -240,11 +231,11 @@ sub check_hook_data {
-     my $y = $x->[$g4+1];
-     $y = $x->[$g4+1];
-     $y->id == 201
--      or die "Incorrect id in 4G+ object";
-+        or die "Incorrect id in 4G+ object";
-     ref($y->data) eq 'HASH'
--      or die "data isn't a ref";
-+        or die "data isn't a ref";
-     $y->data->{name} eq "two"
--      or die "data name not 'one'";
-+        or die "data name not 'one'";
-     print "OK";
- }
- 
-@@ -261,10 +252,10 @@ sub check_net_large_pv {
-     my $x = retrieve_fd($fh);
-     my $g4 = 2*0x80000000;
-     ref $x && ref($x) eq "SCALAR"
--      or die "Not a scalar ref ", ref $x;
-+        or die "Not a scalar ref ", ref $x;
- 
-     length($$x) == $g4+5
--      or die "Incorect length";
-+        or die "Incorect length";
-     print "OK";
- }
- 
-diff --git a/t/integer.t b/t/integer.t
-index b6d9f90..61cae89 100644
---- a/t/integer.t
-+++ b/t/integer.t
-@@ -6,25 +6,14 @@
- #  in the README file that comes with the distribution.
- #
- 
--# I ought to keep this test easily backwards compatible to 5.004, so no
--# qr//;
--
- # This test checks downgrade behaviour on pre-5.8 perls when new 5.8 features
- # are encountered.
- 
--sub BEGIN {
--    unshift @INC, 't';
--    unshift @INC, 't/compat' if $] < 5.006002;
--    require Config; import Config;
--    if ($ENV{PERL_CORE} and $Config{'extensions'} !~ /\bStorable\b/) {
--        print "1..0 # Skip: Storable was not built\n";
--        exit 0;
--    }
--}
-+use strict;
-+use warnings;
- 
- use Test::More;
- use Storable qw (dclone store retrieve freeze thaw nstore nfreeze);
--use strict;
- 
- my $max_uv = ~0;
- my $max_uv_m1 = ~0 ^ 1;
-@@ -33,36 +22,38 @@ my $max_uv_m1 = ~0 ^ 1;
- # use integer.
- my $max_iv_p1 = $max_uv ^ ($max_uv >> 1);
- my $lots_of_9C = do {
--  my $temp = sprintf "%#x", ~0;
--  $temp =~ s/ff/9c/g;
--  local $^W;
--  eval $temp;
-+    my $temp = sprintf "%#x", ~0;
-+    $temp =~ s/ff/9c/g;
-+    local $^W;
-+    no warnings 'portable';
-+    eval $temp;
- };
- 
- my $max_iv = ~0 >> 1;
- my $min_iv = do {use integer; -$max_iv-1}; # 2s complement assumption
- 
--my @processes = (["dclone", \&do_clone],
--                 ["freeze/thaw", \&freeze_and_thaw],
--                 ["nfreeze/thaw", \&nfreeze_and_thaw],
--                 ["store/retrieve", \&store_and_retrieve],
--                 ["nstore/retrieve", \&nstore_and_retrieve],
--                );
--my @numbers =
--  (# IV bounds of 8 bits
--   -1, 0, 1, -127, -128, -129, 42, 126, 127, 128, 129, 254, 255, 256, 257,
--   # IV bounds of 32 bits
--   -2147483647, -2147483648, -2147483649, 2147483646, 2147483647, 2147483648,
--   # IV bounds
--   $min_iv, do {use integer; $min_iv + 1}, do {use integer; $max_iv - 1},
--   $max_iv,
--   # UV bounds at 32 bits
--   0x7FFFFFFF, 0x80000000, 0x80000001, 0xFFFFFFFF, 0xDEADBEEF,
--   # UV bounds
--   $max_iv_p1, $max_uv_m1, $max_uv, $lots_of_9C,
--   # NV-UV conversion
--   2559831922.0,
--  );
-+my @processes = (
-+    ["dclone", \&do_clone],
-+    ["freeze/thaw", \&freeze_and_thaw],
-+    ["nfreeze/thaw", \&nfreeze_and_thaw],
-+    ["store/retrieve", \&store_and_retrieve],
-+    ["nstore/retrieve", \&nstore_and_retrieve],
-+);
-+my @numbers = (
-+    # IV bounds of 8 bits
-+    -1, 0, 1, -127, -128, -129, 42, 126, 127, 128, 129, 254, 255, 256, 257,
-+    # IV bounds of 32 bits
-+    -2147483647, -2147483648, -2147483649, 2147483646, 2147483647, 2147483648,
-+    # IV bounds
-+    $min_iv, do {use integer; $min_iv + 1}, do {use integer; $max_iv - 1},
-+    $max_iv,
-+    # UV bounds at 32 bits
-+    0x7FFFFFFF, 0x80000000, 0x80000001, 0xFFFFFFFF, 0xDEADBEEF,
-+    # UV bounds
-+    $max_iv_p1, $max_uv_m1, $max_uv, $lots_of_9C,
-+    # NV-UV conversion
-+    2559831922.0,
-+);
- 
- plan tests => @processes * @numbers * 5;
- 
-@@ -72,102 +63,104 @@ die "Temporary file '$file' already exists" if -e $file;
- END { while (-f $file) {unlink $file or die "Can't unlink '$file': $!" }}
- 
- sub do_clone {
--  my $data = shift;
--  my $copy = eval {dclone $data};
--  is ($@, '', 'Should be no error dcloning');
--  ok (1, "dlcone is only 1 process, not 2");
--  return $copy;
-+    my $data = shift;
-+    my $copy = eval {dclone $data};
-+    is ($@, '', 'Should be no error dcloning');
-+    ok (1, "dlcone is only 1 process, not 2");
-+    return $copy;
- }
- 
- sub freeze_and_thaw {
--  my $data = shift;
--  my $frozen = eval {freeze $data};
--  is ($@, '', 'Should be no error freezing');
--  my $copy = eval {thaw $frozen};
--  is ($@, '', 'Should be no error thawing');
--  return $copy;
-+    my $data = shift;
-+    my $frozen = eval {freeze $data};
-+    is ($@, '', 'Should be no error freezing');
-+    my $copy = eval {thaw $frozen};
-+    is ($@, '', 'Should be no error thawing');
-+    return $copy;
- }
- 
- sub nfreeze_and_thaw {
--  my $data = shift;
--  my $frozen = eval {nfreeze $data};
--  is ($@, '', 'Should be no error nfreezing');
--  my $copy = eval {thaw $frozen};
--  is ($@, '', 'Should be no error thawing');
--  return $copy;
-+    my $data = shift;
-+    my $frozen = eval {nfreeze $data};
-+    is ($@, '', 'Should be no error nfreezing');
-+    my $copy = eval {thaw $frozen};
-+    is ($@, '', 'Should be no error thawing');
-+    return $copy;
- }
- 
- sub store_and_retrieve {
--  my $data = shift;
--  my $frozen = eval {store $data, $file};
--  is ($@, '', 'Should be no error storing');
--  my $copy = eval {retrieve $file};
--  is ($@, '', 'Should be no error retrieving');
--  return $copy;
-+    my $data = shift;
-+    my $frozen = eval {store $data, $file};
-+    is ($@, '', 'Should be no error storing');
-+    my $copy = eval {retrieve $file};
-+    is ($@, '', 'Should be no error retrieving');
-+    return $copy;
- }
- 
- sub nstore_and_retrieve {
--  my $data = shift;
--  my $frozen = eval {nstore $data, $file};
--  is ($@, '', 'Should be no error storing');
--  my $copy = eval {retrieve $file};
--  is ($@, '', 'Should be no error retrieving');
--  return $copy;
-+    my $data = shift;
-+    my $frozen = eval {nstore $data, $file};
-+    is ($@, '', 'Should be no error storing');
-+    my $copy = eval {retrieve $file};
-+    is ($@, '', 'Should be no error retrieving');
-+    return $copy;
- }
- 
- foreach (@processes) {
--  my ($process, $sub) = @$_;
--  foreach my $number (@numbers) {
--    # as $number is an alias into @numbers, we don't want any side effects of
--    # conversion macros affecting later runs, so pass a copy to Storable:
--    my $copy1 = my $copy2 = my $copy0 = $number;
--    my $copy_s = &$sub (\$copy0);
--    if (is (ref $copy_s, "SCALAR", "got back a scalar ref?")) {
--      # Test inside use integer to see if the bit pattern is identical
--      # and outside to see if the sign is right.
--      # On 5.8 we don't need this trickery anymore.
--      # We really do need 2 copies here, as conversion may have side effect
--      # bugs. In particular, I know that this happens:
--      # perl5.00503 -le '$a = "-2147483649"; $a & 0; print $a; print $a+1'
--      # -2147483649
--      # 2147483648
--
--      my $copy_s1 = my $copy_s2 = $$copy_s;
--      # On 5.8 can do this with a straight ==, due to the integer/float maths
--      # on 5.6 can't do this with
--      # my $eq = do {use integer; $copy_s1 == $copy1} && $copy_s1 == $copy1;
--      # because on builds with IV as long long it tickles bugs.
--      # (Uncomment it and the Devel::Peek line below to see the messed up
--      # state of the scalar, with PV showing the correct string for the
--      # number, and IV holding a bogus value which has been truncated to 32 bits
--
--      # So, check the bit patterns are identical, and check that the sign is the
--      # same. This works on all the versions in all the sizes.
--      # $eq =  && (($copy_s1 <=> 0) == ($copy1 <=> 0));
--      # Split this into 2 tests, to cater for 5.005_03
--
--      # Aargh. Even this doesn't work because 5.6.x sends values with (same
--      # number of decimal digits as ~0 + 1) via atof. So ^ is getting strings
--      # cast to doubles cast to integers. And that truncates low order bits.
--      # my $bit = ok (($copy_s1 ^ $copy1) == 0, "$process $copy1 (bitpattern)");
--
--      # Oh well; at least the parser gets it right. :-)
--      my $copy_s3 = eval $copy_s1;
--      die "Was supposed to have number $copy_s3, got error $@"
--	unless defined $copy_s3;
--      my $bit = ok (($copy_s3 ^ $copy1) == 0, "$process $copy1 (bitpattern)");
--      my $sign = ok (($copy_s2 <=> 0) == ($copy2 <=> 0),
--                     "$process $copy1 (sign)");
--
--      unless ($bit and $sign) {
--        printf "# Passed in %s  (%#x, %i)\n# got back '%s' (%#x, %i)\n",
--          $copy1, $copy1, $copy1, $copy_s1, $copy_s1, $copy_s1;
--        # use Devel::Peek; Dump $number; Dump $copy1; Dump $copy_s1;
--      }
--      # unless ($bit) { use Devel::Peek; Dump $copy_s1; Dump $$copy_s; }
--    } else {
--      fail ("$process $copy1");
--      fail ("$process $copy1");
-+    my ($process, $sub) = @$_;
-+    foreach my $number (@numbers) {
-+        # as $number is an alias into @numbers, we don't want any side effects of
-+        # conversion macros affecting later runs, so pass a copy to Storable:
-+        my $copy1 = my $copy2 = my $copy0 = $number;
-+        my $copy_s = &$sub (\$copy0);
-+        if (is (ref $copy_s, "SCALAR", "got back a scalar ref?")) {
-+            # Test inside use integer to see if the bit pattern is identical
-+            # and outside to see if the sign is right.
-+            # On 5.8 we don't need this trickery anymore.
-+            # We really do need 2 copies here, as conversion may have side effect
-+            # bugs. In particular, I know that this happens:
-+            # perl5.00503 -le '$a = "-2147483649"; $a & 0; print $a; print $a+1'
-+            # -2147483649
-+            # 2147483648
-+
-+            my $copy_s1 = my $copy_s2 = $$copy_s;
-+            # On 5.8 can do this with a straight ==, due to the integer/float maths
-+            # on 5.6 can't do this with
-+            # my $eq = do {use integer; $copy_s1 == $copy1} && $copy_s1 == $copy1;
-+            # because on builds with IV as long long it tickles bugs.
-+            # (Uncomment it and the Devel::Peek line below to see the messed up
-+            # state of the scalar, with PV showing the correct string for the
-+            # number, and IV holding a bogus value which has been truncated to 32 bits
-+
-+            # So, check the bit patterns are identical, and check that the sign is the
-+            # same. This works on all the versions in all the sizes.
-+            # $eq =  && (($copy_s1 <=> 0) == ($copy1 <=> 0));
-+            # Split this into 2 tests, to cater for 5.005_03
-+
-+            # Aargh. Even this doesn't work because 5.6.x sends values with (same
-+            # number of decimal digits as ~0 + 1) via atof. So ^ is getting strings
-+            # cast to doubles cast to integers. And that truncates low order bits.
-+            # my $bit = ok (($copy_s1 ^ $copy1) == 0, "$process $copy1 (bitpattern)");
-+
-+            # Oh well; at least the parser gets it right. :-)
-+            my $copy_s3 = eval $copy_s1;
-+            die "Was supposed to have number $copy_s3, got error $@"
-+                unless defined $copy_s3;
-+            my $bit = ok (($copy_s3 ^ $copy1) == 0, "$process $copy1 (bitpattern)");
-+            my $sign = ok (
-+                ($copy_s2 <=> 0) == ($copy2 <=> 0),
-+                "$process $copy1 (sign)"
-+            );
-+
-+            unless ($bit and $sign) {
-+                printf "# Passed in %s  (%#x, %i)\n# got back '%s' (%#x, %i)\n",
-+                    $copy1, $copy1, $copy1, $copy_s1, $copy_s1, $copy_s1;
-+                # use Devel::Peek; Dump $number; Dump $copy1; Dump $copy_s1;
-+            }
-+            # unless ($bit) { use Devel::Peek; Dump $copy_s1; Dump $$copy_s; }
-+        } else {
-+            fail ("$process $copy1");
-+            fail ("$process $copy1");
-+        }
-     }
--  }
- }
-diff --git a/t/interwork56.t b/t/interwork56.t
-index 239c8c1..49ae44f 100644
---- a/t/interwork56.t
-+++ b/t/interwork56.t
-@@ -6,20 +6,15 @@
- #  in the README file that comes with the distribution.
- #
- 
--# I ought to keep this test easily backwards compatible to 5.004, so no
--# qr//;
--
- # This test checks whether the kludge to interwork with 5.6 Storables compiled
- # on Unix systems with IV as long long works.
- 
-+use strict;
-+use warnings;
-+
-+use Config;
- sub BEGIN {
--    unshift @INC, 't';
--    unshift @INC, 't/compat' if $] < 5.006002;
--    require Config; import Config;
--    if ($ENV{PERL_CORE} and $Config{'extensions'} !~ /\bStorable\b/) {
--        print "1..0 # Skip: Storable was not built\n";
--        exit 0;
--    }
-+    unshift @INC, 't/lib';
-     unless ($Config{ivsize} and $Config{ivsize} > $Config{longsize}) {
-         print "1..0 # Skip: Your IVs are no larger than your longs\n";
-         exit 0;
-@@ -27,7 +22,6 @@ sub BEGIN {
- }
- 
- use Storable qw(freeze thaw);
--use strict;
- use Test::More tests=>30;
- 
- our (%tests);
-@@ -70,15 +64,15 @@ SKIP: {
-         print << "EOM";
- # No test data for Storable 1.x for:
- #
--# byteorder	 '$Config{byteorder}'
--# sizeof(int)	 $$header{intsize}
--# sizeof(long)	 $$header{longsize}
--# sizeof(char *) $$header{ptrsize}
--# sizeof(NV)	 $$header{nvsize}
-+# byteorder         '$Config{byteorder}'
-+# sizeof(int)       $$header{intsize}
-+# sizeof(long)      $$header{longsize}
-+# sizeof(char *)    $$header{ptrsize}
-+# sizeof(NV)        $$header{nvsize}
- 
- # If you have Storable 1.x built with perl 5.6.x on this platform, please
- # make_56_interwork.pl to generate test data, and append the test data to
--# this test. 
-+# this test.
- # You may find that make_56_interwork.pl reports that your platform has no
- # interworking problems, in which case you need do nothing.
- EOM
-@@ -87,7 +81,7 @@ EOM
-     my $result = eval {thaw $real_thing};
-     is ($result, undef, "By default should not be able to thaw");
-     like ($@, qr/Byte order is not compatible/,
--          "because the header byte order strings differ");
-+        "because the header byte order strings differ");
-     local $Storable::interwork_56_64bit = 1;
-     $result = eval {thaw $real_thing};
-     isa_ok ($result, 'ARRAY', "With flag should now thaw");
-@@ -99,8 +93,8 @@ EOM
- 
-     is (@$result, 4, "4 elements in array");
-     like ($$result[0],
--          qr/^This file was written with [0-9.]+ on perl [0-9.]+\z/,
--         "1st element");
-+        qr/^This file was written with [0-9.]+ on perl [0-9.]+\z/,
-+        "1st element");
-     is ($$result[1], "$kingdom was correct", "2nd element");
-     cmp_ok ($$result[2] ^ $value, '==', 0, "3rd element") or
-         printf "# expected %#X, got %#X\n", $value, $$result[2];
-@@ -121,12 +115,12 @@ my $test_kludge;
- my $header_kludge = Storable::read_magic ($test_kludge);
- 
- cmp_ok (length ($header_kludge->{byteorder}), '==', $Config{longsize},
--        "With 5.6 interwork kludge byteorder string should be same size as long"
--       );
-+    "With 5.6 interwork kludge byteorder string should be same size as long"
-+);
- $result = eval {thaw $test_kludge};
- is ($result, undef, "By default should not be able to thaw");
- like ($@, qr/Byte order is not compatible/,
--      "because the header byte order strings differ");
-+    "because the header byte order strings differ");
- 
- $result = eval {thaw $test};
- isa_ok ($result, 'SCALAR', "CHORUS: check thawing test data");
-@@ -144,7 +138,7 @@ is ($$result, 'Hell', "        and gives the expected data");
-     $result = eval {thaw $test};
-     is ($result, undef, "But now can't thaw real data");
-     like ($@, qr/Byte order is not compatible/,
--          "because the header byte order strings differ");
-+        "because the header byte order strings differ");
- }
- 
- #  All together now:
-diff --git a/t/just_plain_nasty.t b/t/just_plain_nasty.t
-index 5423719..ed99068 100644
---- a/t/just_plain_nasty.t
-+++ b/t/just_plain_nasty.t
-@@ -1,36 +1,24 @@
--#!/usr/bin/perl
-+#!./perl
- 
- # This is a test suite to cover all the nasty and horrible data
- # structures that cause bizarre corner cases.
- 
- #  Everyone's invited! :-D
- 
--sub BEGIN {
--    unshift @INC, 't';
--    unshift @INC, 't/compat' if $] < 5.006002;
--    require Config; import Config;
--    if ($ENV{PERL_CORE} and $Config{'extensions'} !~ /\bStorable\b/) {
--        print "1..0 # Skip: Storable was not built\n";
--        exit 0;
--    }
--}
--
- use strict;
-+use warnings;
-+
-+use Test::More;
-+use File::Spec;
-+
- BEGIN {
-     if (!eval q{
--        use Test::More;
-         use B::Deparse 0.61;
--        use 5.006;
-         1;
-     }) {
--        print "1..0 # skip: tests only work with B::Deparse 0.61 and at least perl 5.6.0\n";
-+        print "1..0 # skip: tests only work with B::Deparse 0.61\n";
-         exit;
-     }
--    require File::Spec;
--    if ($File::Spec::VERSION < 0.8) {
--        print "1..0 # Skip: newer File::Spec needed\n";
--        exit 0;
--    }
- }
- 
- use Storable qw(freeze thaw);
-@@ -44,11 +32,11 @@ BEGIN {
- 
- {
-     package Banana;
--    use overload   
--	'<=>' => \&compare,
--	    '==' => \&equal,
--		'""' => \&real,
--		fallback => 1;
-+    use overload
-+        '<=>' => \&compare,
-+        '==' => \&equal,
-+        '""' => \&real,
-+        fallback => 1;
-     sub compare { return int(rand(3))-1 };
-     sub equal { return 1 if rand(1) > 0.5 }
-     sub real { return "keep it so" }
-@@ -56,14 +44,14 @@ BEGIN {
- 
- my (@a);
- 
--for my $dbun (1, 0) {  # dbun - don't be utterly nasty - being utterly
--                       # nasty means having a reference to the object
--                       # directly within itself. otherwise it's in the
--                       # second array.
-+for my $dbun (1, 0) {   # dbun - don't be utterly nasty - being utterly
-+                        # nasty means having a reference to the object
-+                        # directly within itself. otherwise it's in the
-+                        # second array.
-     my $nasty = [
--		 ($a[0] = bless [ ], "Banana"),
--		 ($a[1] = [ ]),
--		];
-+        ($a[0] = bless [ ], "Banana"),
-+        ($a[1] = [ ]),
-+    ];
- 
-     $a[$dbun]->[0] = $a[0];
- 
-@@ -135,8 +123,8 @@ for my $dbun (1, 0) {  # dbun - don't be utterly nasty - being utterly
- 
- sub headit {
- 
--    return;  # comment out to get headings - useful for scanning
--             # output with $Storable::DEBUGME = 1
-+    return;     # comment out to get headings - useful for scanning
-+                # output with $Storable::DEBUGME = 1
- 
-     my $title = shift;
- 
-@@ -144,6 +132,6 @@ sub headit {
-     my $size_right = (67 - length($title)) >> 1;
- 
-     print "# ".("-" x $size_left). " $title "
--	.("-" x $size_right)."\n";
-+        .("-" x $size_right)."\n";
- }
- 
-diff --git a/t/leaks.t b/t/leaks.t
-index eb151a1..204d631 100644
---- a/t/leaks.t
-+++ b/t/leaks.t
-@@ -1,10 +1,13 @@
- #!./perl
- 
-+use strict;
-+use warnings;
-+
- use Test::More;
- use Storable ();
- BEGIN {
--eval "use Test::LeakTrace";
--plan 'skip_all' => 'Test::LeakTrace required for this tests' if $@;
-+    eval "use Test::LeakTrace";
-+    plan 'skip_all' => 'Test::LeakTrace required for this tests' if $@;
- }
- plan 'tests' => 1;
- 
-@@ -33,17 +36,17 @@ plan 'tests' => 1;
- }
- 
- { # [cpan #97316]
--  package TestClass;
-+    package TestClass;
- 
--  sub new {
--    my $class = shift;
--    return bless({}, $class);
--  }
--  sub STORABLE_freeze {
--    die;
--  }
-+    sub new {
-+        my $class = shift;
-+        return bless({}, $class);
-+    }
-+    sub STORABLE_freeze {
-+        die;
-+    }
- 
--  package main;
--  my $obj = TestClass->new;
--  eval { freeze($obj); };
-+    package main;
-+    my $obj = TestClass->new;
-+    eval { freeze($obj); };
- }
-diff --git a/t/lib/HAS_HOOK.pm b/t/lib/HAS_HOOK.pm
-new file mode 100644
-index 0000000..3013015
---- /dev/null
-+++ b/t/lib/HAS_HOOK.pm
-@@ -0,0 +1,14 @@
-+package HAS_HOOK;
-+use strict;
-+use warnings;
-+
-+our $thawed_count;
-+our $loaded_count;
-+
-+sub STORABLE_thaw {
-+    ++$thawed_count;
-+}
-+
-+++$loaded_count;
-+
-+1;
-diff --git a/t/lib/HAS_OVERLOAD.pm b/t/lib/HAS_OVERLOAD.pm
-new file mode 100644
-index 0000000..d6f0241
---- /dev/null
-+++ b/t/lib/HAS_OVERLOAD.pm
-@@ -0,0 +1,18 @@
-+package HAS_OVERLOAD;
-+use strict;
-+use warnings;
-+
-+our $loaded_count;
-+
-+use overload
-+    '""'        => sub { ${$_[0]} }, fallback => 1;
-+
-+sub make {
-+    my $package = shift;
-+    my $value = shift;
-+    bless \$value, $package;
-+}
-+
-+++$loaded_count;
-+
-+1;
-diff --git a/t/lib/STDump.pm b/t/lib/STDump.pm
-new file mode 100644
-index 0000000..d7fa886
---- /dev/null
-+++ b/t/lib/STDump.pm
-@@ -0,0 +1,138 @@
-+#
-+#  Copyright (c) 1995-2000, Raphael Manfredi
-+#
-+#  You may redistribute only under the same terms as Perl 5, as specified
-+#  in the README file that comes with the distribution.
-+#
-+
-+package STDump;
-+use strict;
-+use warnings;
-+use Carp;
-+use Exporter;
-+*import = \&Exporter::import;
-+
-+our @EXPORT = qw(stdump);
-+
-+my %dump = (
-+    'SCALAR'        => \&dump_scalar,
-+    'LVALUE'        => \&dump_scalar,
-+    'ARRAY'         => \&dump_array,
-+    'HASH'          => \&dump_hash,
-+    'REF'           => \&dump_ref,
-+);
-+
-+# Given an object, dump its transitive data closure
-+sub stdump {
-+    my ($object) = @_;
-+    croak "Not a reference!" unless ref($object);
-+    my $ctx = {
-+        dumped => {},
-+        object => {},
-+        count => 0,
-+        dump => '',
-+    };
-+    recursive_dump($object, 1, $ctx);
-+    return $ctx->{dump};
-+}
-+
-+# This is the root recursive dumping routine that may indirectly be
-+# called by one of the routine it calls...
-+# The link parameter is set to false when the reference passed to
-+# the routine is an internal temporary variable, implying the object's
-+# address is not to be dumped in the %dumped table since it's not a
-+# user-visible object.
-+sub recursive_dump {
-+    my ($object, $link, $ctx) = @_;
-+
-+    # Get something like SCALAR(0x...) or TYPE=SCALAR(0x...).
-+    # Then extract the bless, ref and address parts of that string.
-+
-+    my $what = "$object";               # Stringify
-+    my ($bless, $ref, $addr) = $what =~ /^(\w+)=(\w+)\((0x.*)\)$/;
-+    ($ref, $addr) = $what =~ /^(\w+)\((0x.*)\)$/ unless $bless;
-+
-+    # Special case for references to references. When stringified,
-+    # they appear as being scalars. However, ref() correctly pinpoints
-+    # them as being references indirections. And that's it.
-+
-+    $ref = 'REF' if ref($object) eq 'REF';
-+
-+    # Make sure the object has not been already dumped before.
-+    # We don't want to duplicate data. Retrieval will know how to
-+    # relink from the previously seen object.
-+
-+    if ($link && $ctx->{dumped}{$addr}++) {
-+        my $num = $ctx->{object}{$addr};
-+        $ctx->{dump} .= "OBJECT #$num seen\n";
-+        return;
-+    }
-+
-+    my $objcount = $ctx->{count}++;
-+    $ctx->{object}{$addr} = $objcount;
-+
-+    # Call the appropriate dumping routine based on the reference type.
-+    # If the referenced was blessed, we bless it once the object is dumped.
-+    # The retrieval code will perform the same on the last object retrieved.
-+
-+    croak "Unknown simple type '$ref'" unless defined $dump{$ref};
-+
-+    $dump{$ref}->($object, $ctx);    # Dump object
-+    $ctx->{dump} .= "BLESS $bless\n" if $bless;  # Mark it as blessed, if necessary
-+
-+    $ctx->{dump} .= "OBJECT $objcount\n";
-+}
-+
-+# Dump single scalar
-+sub dump_scalar {
-+    my ($sref, $ctx) = @_;
-+    my $scalar = $$sref;
-+    unless (defined $scalar) {
-+        $ctx->{dump} .= "UNDEF\n";
-+        return;
-+    }
-+    my $len = length($scalar);
-+    $ctx->{dump} .= "SCALAR len=$len $scalar\n";
-+}
-+
-+# Dump array
-+sub dump_array {
-+    my ($aref, $ctx) = @_;
-+    my $items = 0 + @{$aref};
-+    $ctx->{dump} .= "ARRAY items=$items\n";
-+    foreach my $item (@{$aref}) {
-+        unless (defined $item) {
-+            $ctx->{dump} .= 'ITEM_UNDEF' . "\n";
-+            next;
-+        }
-+        $ctx->{dump} .= 'ITEM ';
-+        recursive_dump(\$item, 1, $ctx);
-+    }
-+}
-+
-+# Dump hash table
-+sub dump_hash {
-+    my ($href, $ctx) = @_;
-+    my $items = scalar(keys %{$href});
-+    $ctx->{dump} .= "HASH items=$items\n";
-+    foreach my $key (sort keys %{$href}) {
-+        $ctx->{dump} .= 'KEY ';
-+        recursive_dump(\$key, undef, $ctx);
-+        unless (defined $href->{$key}) {
-+            $ctx->{dump} .= 'VALUE_UNDEF' . "\n";
-+            next;
-+        }
-+        $ctx->{dump} .= 'VALUE ';
-+        recursive_dump(\$href->{$key}, 1, $ctx);
-+    }
-+}
-+
-+# Dump reference to reference
-+sub dump_ref {
-+    my ($rref, $ctx) = @_;
-+    my $deref = $$rref;                 # Follow reference to reference
-+    $ctx->{dump} .= 'REF ';
-+    recursive_dump($deref, 1, $ctx);         # $dref is a reference
-+}
-+
-+1;
-diff --git a/t/lib/STTestLib.pm b/t/lib/STTestLib.pm
-new file mode 100644
-index 0000000..a370334
---- /dev/null
-+++ b/t/lib/STTestLib.pm
-@@ -0,0 +1,39 @@
-+package STTestLib;
-+use strict;
-+use warnings;
-+
-+use Exporter;
-+*import = \&Exporter::import;
-+
-+our @EXPORT_OK = qw(slurp write_and_retrieve tempfilename);
-+
-+use Storable qw(retrieve);
-+use File::Temp qw(tempfile);
-+
-+sub slurp {
-+    my $file = shift;
-+    open my $fh, "<", $file or die "Can't open '$file': $!";
-+    binmode $fh;
-+    my $contents = do { local $/; <$fh> };
-+    die "Can't read $file: $!" unless defined $contents;
-+    return $contents;
-+}
-+
-+sub write_and_retrieve {
-+    my $data = shift;
-+
-+    my ($fh, $filename) = tempfile('storable-testfile-XXXXX', TMPDIR => 1, UNLINK => 1);
-+    binmode $fh;
-+    print $fh $data or die "Can't print to '$filename': $!";
-+    close $fh or die "Can't close '$filename': $!";
-+
-+    return eval { retrieve $filename };
-+}
-+
-+sub tempfilename {
-+    local $^W;
-+    my (undef, $file) = tempfile('storable-testfile-XXXXX', TMPDIR => 1, UNLINK => 1);
-+    return $file;
-+}
-+
-+1;
-diff --git a/t/lock.t b/t/lock.t
-index 8c1fc57..aea8146 100644
---- a/t/lock.t
-+++ b/t/lock.t
-@@ -1,23 +1,19 @@
- #!./perl
- #
- #  Copyright (c) 1995-2000, Raphael Manfredi
--#  
-+#
- #  You may redistribute only under the same terms as Perl 5, as specified
- #  in the README file that comes with the distribution.
- #
- 
-+use strict;
-+use warnings;
-+
- sub BEGIN {
--    unshift @INC, 't';
--    unshift @INC, 't/compat' if $] < 5.006002;
--    require Config; import Config;
--    if ($ENV{PERL_CORE} and $Config{'extensions'} !~ /\bStorable\b/) {
--        print "1..0 # Skip: Storable was not built\n";
--        exit 0;
--    }
--
--    require 'st-dump.pl';
-+    unshift @INC, 't/lib';
- }
- 
-+use STDump;
- use Test::More;
- use Storable qw(lock_store lock_retrieve);
- 
-@@ -27,20 +23,20 @@ unless (&Storable::CAN_FLOCK) {
- 
- plan(tests => 5);
- 
--@a = ('first', undef, 3, -4, -3.14159, 456, 4.5);
-+my @a = ('first', undef, 3, -4, -3.14159, 456, 4.5);
- 
- #
- # We're just ensuring things work, we're not validating locking.
- #
- 
- isnt(lock_store(\@a, "store$$"), undef);
--my $dumped = &dump(\@a);
-+my $dumped = stdump(\@a);
- isnt($dumped, undef);
- 
--$root = lock_retrieve("store$$");
-+my $root = lock_retrieve("store$$");
- is(ref $root, 'ARRAY');
- is(scalar @a, scalar @$root);
--is(&dump($root), $dumped);
-+is(stdump($root), $dumped);
- 
- END { 1 while unlink "store$$" }
- 
-diff --git a/t/make_56_interwork.pl b/t/make_56_interwork.pl
-old mode 100644
-new mode 100755
-index c73e9b6..7e6d072
---- a/t/make_56_interwork.pl
-+++ b/t/make_56_interwork.pl
-@@ -1,5 +1,6 @@
--#!/usr/bin/perl -w
-+#!/usr/bin/env perl
- use strict;
-+use warnings;
- 
- use Config;
- use Storable qw(freeze thaw);
-@@ -8,10 +9,11 @@ use Storable qw(freeze thaw);
- # Belfuscu welcomed the rebels who wanted to eat big end first.
- my $kingdom = $Config{byteorder} =~ /23/ ? "Lillput" : "Belfuscu";
- 
--my $frozen = freeze
--  ["This file was written with $Storable::VERSION on perl $]",
--   "$kingdom was correct", (~0 ^ (~0 >> 1) ^ 2),
--   "The End"];
-+my $frozen = freeze [
-+    "This file was written with $Storable::VERSION on perl $]",
-+    "$kingdom was correct", (~0 ^ (~0 >> 1) ^ 2),
-+    "The End"
-+];
- 
- my $ivsize = $Config{ivsize} || $Config{longsize};
- 
-@@ -19,8 +21,8 @@ my $storesize = unpack 'xxC', $frozen;
- my $storebyteorder = unpack "xxxA$storesize", $frozen;
- 
- if ($Config{byteorder} eq $storebyteorder) {
--  my $ivtype = $Config{ivtype} || 'long';
--  print <<"EOM";
-+    my $ivtype = $Config{ivtype} || 'long';
-+    print <<"EOM";
- You only need to run this generator program where Config.pm's byteorder string
- is not the same length as the size of IVs.
- 
-@@ -31,17 +33,17 @@ MS Windows)
- This is perl $], sizeof(long) is $Config{longsize}, IVs are '$ivtype', sizeof(IV) is $ivsize,
- byteorder is '$Config{byteorder}', Storable $Storable::VERSION writes a byteorder of '$storebyteorder'
- EOM
--  exit; # Grr '
-+    exit; # Grr '
- }
- 
- my ($i, $l, $p, $n) = unpack "xxxx${storesize}CCCC", $frozen;
- 
- print <<"EOM";
--# byteorder	 '$storebyteorder'
--# sizeof(int)	 $i
--# sizeof(long)	 $l
-+# byteorder      '$storebyteorder'
-+# sizeof(int)    $i
-+# sizeof(long)   $l
- # sizeof(char *) $p
--# sizeof(NV)	 $n
-+# sizeof(NV)     $n
- EOM
- 
- my $uu = pack 'u', $frozen;
-diff --git a/t/make_downgrade.pl b/t/make_downgrade.pl
-old mode 100644
-new mode 100755
-index 60375db..a553cd9
---- a/t/make_downgrade.pl
-+++ b/t/make_downgrade.pl
-@@ -1,5 +1,6 @@
--#!/usr/local/bin/perl -w
-+#!/usr/bin/env perl
- use strict;
-+use warnings;
- 
- use 5.007003;
- use Hash::Util qw(lock_hash unlock_hash lock_keys);
-@@ -7,14 +8,14 @@ use Storable qw(nfreeze);
- 
- # If this looks like a hack, it's probably because it is :-)
- sub uuencode_it {
--  my ($data, $name) = @_;
--  my $frozen = nfreeze $data;
-+    my ($data, $name) = @_;
-+    my $frozen = nfreeze $data;
- 
--  my $uu = pack 'u', $frozen;
-+    my $uu = pack 'u', $frozen;
- 
--  printf "begin %3o $name\n", ord 'A';
--  print $uu;
--  print "\nend\n\n";
-+    printf "begin %3o $name\n", ord 'A';
-+    print $uu;
-+    print "\nend\n\n";
- }
- 
- 
-@@ -93,11 +94,11 @@ uuencode_it (\%uhash, "Locked hash with utf8 keys");
- my %pre58;
- 
- while (my ($key, $val) = each %uhash) {
--  # hash keys are always stored downgraded to bytes if possible, with a flag
--  # to say "promote back to utf8"
--  # Whereas scalars are stored as is.
--  utf8::encode ($key) if ord $key > 256;
--  $pre58{$key} = $val;
-+    # hash keys are always stored downgraded to bytes if possible, with a flag
-+    # to say "promote back to utf8"
-+    # Whereas scalars are stored as is.
-+    utf8::encode ($key) if ord $key > 256;
-+    $pre58{$key} = $val;
- 
- }
- uuencode_it (\%pre58, "Hash with utf8 keys for 5.6");
-diff --git a/t/make_overload.pl b/t/make_overload.pl
-old mode 100644
-new mode 100755
-index bd224f5..3182264
---- a/t/make_overload.pl
-+++ b/t/make_overload.pl
-@@ -1,5 +1,6 @@
--#!/usr/local/bin/perl -w
-+#!/usr/bin/env perl
- use strict;
-+use warnings;
- 
- use Storable qw(nfreeze);
- use HAS_OVERLOAD;
-diff --git a/t/malice.t b/t/malice.t
-index 7b92d3d..f72e45f 100644
---- a/t/malice.t
-+++ b/t/malice.t
-@@ -6,25 +6,18 @@
- #  in the README file that comes with the distribution.
- #
- 
--# I'm trying to keep this test easily backwards compatible to 5.004, so no
--# qr//;
--
- # This test tries to craft malicious data to test out as many different
- # error traps in Storable as possible
- # It also acts as a test for read_header
- 
--sub BEGIN {
--    # This lets us distribute Test::More in t/
--    unshift @INC, 't';
--    unshift @INC, 't/compat' if $] < 5.006002;
--    require Config; import Config;
--    if ($ENV{PERL_CORE} and $Config{'extensions'} !~ /\bStorable\b/) {
--        print "1..0 # Skip: Storable was not built\n";
--        exit 0;
--    }
--}
--
- use strict;
-+use warnings;
-+
-+use Config;
-+
-+BEGIN {
-+    unshift @INC, 't/lib';
-+}
- 
- our $byteorder = $Config{byteorder};
- 
-@@ -35,6 +28,7 @@ our $major = 2;
- our $minor = 12;
- our $minor_write = $] >= 5.019 ? 11 : $] > 5.008 ? 9 : $] > 5.005_50 ? 8 : 4;
- 
-+use STTestLib qw(slurp write_and_retrieve tempfilename);
- use Test::More;
- 
- # If it's 5.7.3 or later the hash will be stored with flags, which is
-@@ -48,8 +42,6 @@ our $fancy = ($] > 5.007 ? 2 : 0);
- plan tests => 372 + length ($byteorder) * 4 + $fancy * 8;
- 
- use Storable qw (store retrieve freeze thaw nstore nfreeze);
--require 'testlib.pl';
--our $file;
- 
- # The chr 256 is a hack to force the hash to always have the utf8 keys flag
- # set on 5.7.3 and later. Otherwise the test fails if run with -Mutf8 because
-@@ -59,195 +51,220 @@ my %hash = (perl => 'rules', chr 256, '');
- delete $hash{chr 256};
- 
- sub test_hash {
--  my $clone = shift;
--  is (ref $clone, "HASH", "Get hash back");
--  is (scalar keys %$clone, 1, "with 1 key");
--  is ((keys %$clone)[0], "perl", "which is correct");
--  is ($clone->{perl}, "rules", "Got expected value when looking up key in clone");
-+    my $clone = shift;
-+    is (ref $clone, "HASH", "Get hash back");
-+    is (scalar keys %$clone, 1, "with 1 key");
-+    is ((keys %$clone)[0], "perl", "which is correct");
-+    is ($clone->{perl}, "rules", "Got expected value when looking up key in clone");
- }
- 
- sub test_header {
--  my ($header, $isfile, $isnetorder) = @_;
--  is (!!$header->{file}, !!$isfile, "is file");
--  is ($header->{major}, $major, "major number");
--  is ($header->{minor}, $minor_write, "minor number");
--  is (!!$header->{netorder}, !!$isnetorder, "is network order");
--  if ($isnetorder) {
--    # Network order header has no sizes
--  } else {
--    is ($header->{byteorder}, $byteorder, "byte order");
--    is ($header->{intsize}, $Config{intsize}, "int size");
--    is ($header->{longsize}, $Config{longsize}, "long size");
-- SKIP: {
--	skip ("No \$Config{prtsize} on this perl version ($])", 1)
--	    unless defined $Config{ptrsize};
--	is ($header->{ptrsize}, $Config{ptrsize}, "long size");
-+    my ($header, $isfile, $isnetorder) = @_;
-+    is (!!$header->{file}, !!$isfile, "is file");
-+    is ($header->{major}, $major, "major number");
-+    is ($header->{minor}, $minor_write, "minor number");
-+    is (!!$header->{netorder}, !!$isnetorder, "is network order");
-+    if ($isnetorder) {
-+        # Network order header has no sizes
-+    }
-+    else {
-+        is ($header->{byteorder}, $byteorder, "byte order");
-+        is ($header->{intsize}, $Config{intsize}, "int size");
-+        is ($header->{longsize}, $Config{longsize}, "long size");
-+        SKIP: {
-+            skip ("No \$Config{prtsize} on this perl version ($])", 1)
-+                unless defined $Config{ptrsize};
-+            is ($header->{ptrsize}, $Config{ptrsize}, "long size");
-+        }
-+        is ($header->{nvsize}, $Config{nvsize} || $Config{doublesize} || 8,
-+            "nv size"); # 5.00405 doesn't even have doublesize in config.
-     }
--    is ($header->{nvsize}, $Config{nvsize} || $Config{doublesize} || 8,
--        "nv size"); # 5.00405 doesn't even have doublesize in config.
--  }
- }
- 
- sub test_truncated {
--  my ($data, $sub, $magic_len, $what) = @_;
--  for my $i (0 .. length ($data) - 1) {
--    my $short = substr $data, 0, $i;
--
--    # local $Storable::DEBUGME = 1;
--    my $clone = &$sub($short);
--    is (defined ($clone), '', "truncated $what to $i should fail");
--    if ($i < $magic_len) {
--      like ($@, "/^Magic number checking on storable $what failed/",
--          "Should croak with magic number warning");
--    } else {
--      is ($@, "", "Should not set \$\@");
-+    my ($data, $sub, $magic_len, $what) = @_;
-+    for my $i (0 .. length ($data) - 1) {
-+        my $short = substr $data, 0, $i;
-+
-+        # local $Storable::DEBUGME = 1;
-+        my $clone = &$sub($short);
-+        is (defined ($clone), '', "truncated $what to $i should fail");
-+        if ($i < $magic_len) {
-+            like ($@, "/^Magic number checking on storable $what failed/",
-+                "Should croak with magic number warning");
-+        }
-+        else {
-+            is ($@, "", "Should not set \$\@");
-+        }
-     }
--  }
- }
- 
- sub test_corrupt {
--  my ($data, $sub, $what, $name) = @_;
-+    my ($data, $sub, $what, $name) = @_;
- 
--  my $clone = &$sub($data);
--  local $Test::Builder::Level = $Test::Builder::Level + 1;
--  is (defined ($clone), '', "$name $what should fail");
--  like ($@, $what, $name);
-+    my $clone = &$sub($data);
-+    local $Test::Builder::Level = $Test::Builder::Level + 1;
-+    is (defined ($clone), '', "$name $what should fail");
-+    like ($@, $what, $name);
- }
- 
- sub test_things {
--  my ($contents, $sub, $what, $isnetwork) = @_;
--  my $isfile = $what eq 'file';
--  my $file_magic = $isfile ? length $file_magic_str : 0;
-+    my ($contents, $sub, $what, $isnetwork) = @_;
-+    my $isfile = $what eq 'file';
-+    my $file_magic = $isfile ? length $file_magic_str : 0;
- 
--  my $header = Storable::read_magic ($contents);
--  test_header ($header, $isfile, $isnetwork);
-+    my $header = Storable::read_magic ($contents);
-+    test_header ($header, $isfile, $isnetwork);
- 
--  # Test that if we re-write it, everything still works:
--  my $clone = &$sub ($contents);
-+    # Test that if we re-write it, everything still works:
-+    my $clone = &$sub ($contents);
- 
--  is ($@, "", "There should be no error");
-+    is ($@, "", "There should be no error");
- 
--  test_hash ($clone);
-+    test_hash ($clone);
- 
--  # Now lets check the short version:
--  test_truncated ($contents, $sub, $file_magic
--                  + ($isnetwork ? $network_magic : $other_magic), $what);
-+    # Now lets check the short version:
-+    test_truncated ($contents, $sub, $file_magic
-+                    + ($isnetwork ? $network_magic : $other_magic), $what);
-+
-+    my $copy;
-+    if ($isfile) {
-+        $copy = $contents;
-+        substr ($copy, 0, 4) = 'iron';
-+        test_corrupt(
-+            $copy, $sub, "/^File is not a perl storable/",
-+            "magic number"
-+        );
-+    }
- 
--  my $copy;
--  if ($isfile) {
-     $copy = $contents;
--    substr ($copy, 0, 4) = 'iron';
--    test_corrupt ($copy, $sub, "/^File is not a perl storable/",
--                  "magic number");
--  }
--
--  $copy = $contents;
--  # Needs to be more than 1, as we're already coding a spread of 1 minor version
--  # number on writes (2.5, 2.4). May increase to 2 if we figure we can do 2.3
--  # on 5.005_03 (No utf8).
--  # 4 allows for a small safety margin
--  # Which we've now exhausted given that Storable 2.25 is writing 2.8
--  # (Joke:
--  # Question: What is the value of pi?
--  # Mathematician answers "It's pi, isn't it"
--  # Physicist answers "3.1, within experimental error"
--  # Engineer answers "Well, allowing for a small safety margin,   18"
--  # )
--  my $minor6 = $header->{minor} + 6;
--  substr ($copy, $file_magic + 1, 1) = chr $minor6;
--  {
--    # Now by default newer minor version numbers are not a pain.
--    $clone = &$sub($copy);
--    is ($@, "", "by default no error on higher minor");
--    test_hash ($clone);
-+    # Needs to be more than 1, as we're already coding a spread of 1 minor version
-+    # number on writes (2.5, 2.4). May increase to 2 if we figure we can do 2.3
-+    # on 5.005_03 (No utf8).
-+    # 4 allows for a small safety margin
-+    # Which we've now exhausted given that Storable 2.25 is writing 2.8
-+    # (Joke:
-+    # Question: What is the value of pi?
-+    # Mathematician answers "It's pi, isn't it"
-+    # Physicist answers "3.1, within experimental error"
-+    # Engineer answers "Well, allowing for a small safety margin,   18"
-+    # )
-+    my $minor6 = $header->{minor} + 6;
-+    substr ($copy, $file_magic + 1, 1) = chr $minor6;
-+    {
-+        # Now by default newer minor version numbers are not a pain.
-+        $clone = &$sub($copy);
-+        is ($@, "", "by default no error on higher minor");
-+        test_hash ($clone);
-+
-+        local $Storable::accept_future_minor = 0;
-+        test_corrupt(
-+            $copy, $sub,
-+            "/^Storable binary image v$header->{major}\.$minor6 more recent than I am \\(v$header->{major}\.$minor\\)/",
-+            "higher minor"
-+        );
-+    }
- 
--    local $Storable::accept_future_minor = 0;
--    test_corrupt ($copy, $sub,
--                  "/^Storable binary image v$header->{major}\.$minor6 more recent than I am \\(v$header->{major}\.$minor\\)/",
--                  "higher minor");
--  }
--
--  $copy = $contents;
--  my $major1 = $header->{major} + 1;
--  substr ($copy, $file_magic, 1) = chr 2*$major1;
--  test_corrupt ($copy, $sub,
--                "/^Storable binary image v$major1\.$header->{minor} more recent than I am \\(v$header->{major}\.$minor\\)/",
--                "higher major");
--
--  # Continue messing with the previous copy
--  my $minor1 = $header->{minor} - 1;
--  substr ($copy, $file_magic + 1, 1) = chr $minor1;
--  test_corrupt ($copy, $sub,
--                "/^Storable binary image v$major1\.$minor1 more recent than I am \\(v$header->{major}\.$minor\\)/",
--              "higher major, lower minor");
--
--  my $where;
--  if (!$isnetwork) {
--    # All these are omitted from the network order header.
--    # I'm not sure if it's correct to omit the byte size stuff.
-     $copy = $contents;
--    substr ($copy, $file_magic + 3, length $header->{byteorder})
--      = reverse $header->{byteorder};
--
--    test_corrupt ($copy, $sub, "/^Byte order is not compatible/",
--                  "byte order");
--    $where = $file_magic + 3 + length $header->{byteorder};
--    foreach (['intsize', "Integer"],
--             ['longsize', "Long integer"],
--             ['ptrsize', "Pointer"],
--             ['nvsize', "Double"]) {
--      my ($key, $name) = @$_;
--      $copy = $contents;
--      substr ($copy, $where++, 1) = chr 0;
--      test_corrupt ($copy, $sub, "/^$name size is not compatible/",
--                    "$name size");
-+    my $major1 = $header->{major} + 1;
-+    substr ($copy, $file_magic, 1) = chr 2*$major1;
-+    test_corrupt(
-+        $copy, $sub,
-+        "/^Storable binary image v$major1\.$header->{minor} more recent than I am \\(v$header->{major}\.$minor\\)/",
-+        "higher major"
-+    );
-+
-+    # Continue messing with the previous copy
-+    my $minor1 = $header->{minor} - 1;
-+    substr ($copy, $file_magic + 1, 1) = chr $minor1;
-+    test_corrupt(
-+        $copy, $sub,
-+        "/^Storable binary image v$major1\.$minor1 more recent than I am \\(v$header->{major}\.$minor\\)/",
-+        "higher major, lower minor"
-+    );
-+
-+    my $where;
-+    if (!$isnetwork) {
-+        # All these are omitted from the network order header.
-+        # I'm not sure if it's correct to omit the byte size stuff.
-+        $copy = $contents;
-+        substr ($copy, $file_magic + 3, length $header->{byteorder})
-+            = reverse $header->{byteorder};
-+
-+        test_corrupt(
-+            $copy, $sub, "/^Byte order is not compatible/",
-+            "byte order"
-+        );
-+        $where = $file_magic + 3 + length $header->{byteorder};
-+        foreach (
-+            ['intsize', "Integer"],
-+            ['longsize', "Long integer"],
-+            ['ptrsize', "Pointer"],
-+            ['nvsize', "Double"]
-+        ) {
-+            my ($key, $name) = @$_;
-+            $copy = $contents;
-+            substr ($copy, $where++, 1) = chr 0;
-+            test_corrupt(
-+                $copy, $sub, "/^$name size is not compatible/",
-+                "$name size"
-+            );
-+        }
-+    } else {
-+        $where = $file_magic + $network_magic;
-     }
--  } else {
--    $where = $file_magic + $network_magic;
--  }
--
--  # Just the header and a tag 255. As 34 is currently the highest tag, this
--  # is "unexpected"
--  $copy = substr ($contents, 0, $where) . chr 255;
--
--  test_corrupt ($copy, $sub,
--                "/^Corrupted storable $what \\(binary v$header->{major}.$header->{minor}\\)/",
--                "bogus tag");
--
--  # Now drop the minor version number
--  substr ($copy, $file_magic + 1, 1) = chr $minor1;
--
--  test_corrupt ($copy, $sub,
--                "/^Corrupted storable $what \\(binary v$header->{major}.$minor1\\)/",
--                "bogus tag, minor less 1");
--  # Now increase the minor version number
--  substr ($copy, $file_magic + 1, 1) = chr $minor6;
--
--  # local $Storable::DEBUGME = 1;
--  # This is the delayed croak
--  test_corrupt ($copy, $sub,
--                "/^Storable binary image v$header->{major}.$minor6 contains data of type 255. This Storable is v$header->{major}.$minor and can only handle data types up to 35/",
--                "bogus tag, minor plus 4");
--  # And check again that this croak is not delayed:
--  {
-+
-+    # Just the header and a tag 255. As 34 is currently the highest tag, this
-+    # is "unexpected"
-+    $copy = substr ($contents, 0, $where) . chr 255;
-+
-+    test_corrupt(
-+        $copy, $sub,
-+        "/^Corrupted storable $what \\(binary v$header->{major}.$header->{minor}\\)/",
-+        "bogus tag"
-+    );
-+
-+    # Now drop the minor version number
-+    substr ($copy, $file_magic + 1, 1) = chr $minor1;
-+
-+    test_corrupt(
-+        $copy, $sub,
-+        "/^Corrupted storable $what \\(binary v$header->{major}.$minor1\\)/",
-+        "bogus tag, minor less 1"
-+    );
-+    # Now increase the minor version number
-+    substr ($copy, $file_magic + 1, 1) = chr $minor6;
-+
-     # local $Storable::DEBUGME = 1;
--    local $Storable::accept_future_minor = 0;
--    test_corrupt ($copy, $sub,
--                  "/^Storable binary image v$header->{major}\.$minor6 more recent than I am \\(v$header->{major}\.$minor\\)/",
--                  "higher minor");
--  }
-+    # This is the delayed croak
-+    test_corrupt(
-+        $copy, $sub,
-+        "/^Storable binary image v$header->{major}.$minor6 contains data of type 255. This Storable is v$header->{major}.$minor and can only handle data types up to 35/",
-+        "bogus tag, minor plus 4"
-+    );
-+    # And check again that this croak is not delayed:
-+    {
-+        # local $Storable::DEBUGME = 1;
-+        local $Storable::accept_future_minor = 0;
-+        test_corrupt(
-+            $copy, $sub,
-+            "/^Storable binary image v$header->{major}\.$minor6 more recent than I am \\(v$header->{major}\.$minor\\)/",
-+            "higher minor"
-+        );
-+    }
- }
- 
-+my $file = tempfilename();
- ok (defined store(\%hash, $file), "store() returned defined value");
- 
- my $expected = 20 + length ($file_magic_str) + $other_magic + $fancy;
- my $length = -s $file;
- 
- die "Don't seem to have written file '$file' as I can't get its length: $!"
--  unless defined $file;
-+    unless defined $file;
- 
- die "Expected file to be $expected bytes (sizeof long is $Config{longsize}) but it is $length"
--  unless $length == $expected;
-+    unless $length == $expected;
- 
- # Read the contents into memory:
- my $contents = slurp ($file);
-@@ -257,14 +274,11 @@ my $clone = retrieve $file;
- test_hash ($clone);
- 
- # Then test it.
--test_things($contents, \&store_and_retrieve, 'file');
-+test_things($contents, \&write_and_retrieve, 'file');
- 
- # And now try almost everything again with a Storable string
- my $stored = freeze \%hash;
--test_things($stored, \&freeze_and_thaw, 'string');
--
--# Network order.
--unlink $file or die "Can't unlink '$file': $!";
-+test_things($stored, sub { eval { thaw $_[0] } }, 'string');
- 
- ok (defined nstore(\%hash, $file), "nstore() returned defined value");
- 
-@@ -272,10 +286,10 @@ $expected = 20 + length ($file_magic_str) + $network_magic + $fancy;
- $length = -s $file;
- 
- die "Don't seem to have written file '$file' as I can't get its length: $!"
--  unless defined $file;
-+    unless defined $file;
- 
- die "Expected file to be $expected bytes (sizeof long is $Config{longsize}) but it is $length"
--  unless $length == $expected;
-+    unless $length == $expected;
- 
- # Read the contents into memory:
- $contents = slurp ($file);
-@@ -285,11 +299,11 @@ $clone = retrieve $file;
- test_hash ($clone);
- 
- # Then test it.
--test_things($contents, \&store_and_retrieve, 'file', 1);
-+test_things($contents, \&write_and_retrieve, 'file', 1);
- 
- # And now try almost everything again with a Storable string
- $stored = nfreeze \%hash;
--test_things($stored, \&freeze_and_thaw, 'string', 1);
-+test_things($stored, sub { eval { thaw $_[0] } }, 'string', 1);
- 
- # Test that the bug fixed by #20587 doesn't affect us under some older
- # Perl. AMS 20030901
-@@ -304,7 +318,7 @@ test_things($stored, \&freeze_and_thaw, 'string', 1);
- }
- 
- # Unusual in that the empty string is stored with an SX_LSCALAR marker
--my $hash = store_and_retrieve("pst0\5\6\3\0\0\0\1\1\0\0\0\0\0\0\0\5empty");
-+my $hash = write_and_retrieve("pst0\5\6\3\0\0\0\1\1\0\0\0\0\0\0\0\5empty");
- ok(!$@, "no exception");
- is(ref($hash), "HASH", "got a hash");
- is($hash->{empty}, "", "got empty element");
-diff --git a/t/overload.t b/t/overload.t
-index 64c09e4..305a92e 100644
---- a/t/overload.t
-+++ b/t/overload.t
-@@ -1,19 +1,16 @@
- #!./perl
- #
- #  Copyright (c) 1995-2000, Raphael Manfredi
--#  
-+#
- #  You may redistribute only under the same terms as Perl 5, as specified
- #  in the README file that comes with the distribution.
--#  
--
--sub BEGIN {
--    unshift @INC, 't';
--    unshift @INC, 't/compat' if $] < 5.006002;
--    require Config; import Config;
--    if ($ENV{PERL_CORE} and $Config{'extensions'} !~ /\bStorable\b/) {
--        print "1..0 # Skip: Storable was not built\n";
--        exit 0;
--    }
-+#
-+
-+use strict;
-+use warnings;
-+
-+BEGIN {
-+    unshift @INC, 't/lib';
- }
- 
- use Storable qw(freeze thaw);
-@@ -25,22 +22,22 @@ use Test::More tests => 19;
- package OVERLOADED;
- 
- use overload
--	'""' => sub { $_[0][0] };
-+    '""' => sub { $_[0][0] };
- 
- package main;
- 
--$a = bless [77], OVERLOADED;
-+my $a = bless [77], 'OVERLOADED';
- 
--$b = thaw freeze $a;
-+my $b = thaw freeze $a;
- is(ref $b, 'OVERLOADED');
- is("$b", "77");
- 
--$c = thaw freeze \$a;
-+my $c = thaw freeze \$a;
- is(ref $c, 'REF');
- is(ref $$c, 'OVERLOADED');
- is("$$c", "77");
- 
--$d = thaw freeze [$a, $a];
-+my $d = thaw freeze [$a, $a];
- is("$d->[0]", "77");
- $d->[0][0]++;
- is("$d->[1]", "78");
-@@ -48,27 +45,27 @@ is("$d->[1]", "78");
- package REF_TO_OVER;
- 
- sub make {
--	my $self = bless {}, shift;
--	my ($over) = @_;
--	$self->{over} = $over;
--	return $self;
-+    my $self = bless {}, shift;
-+    my ($over) = @_;
-+    $self->{over} = $over;
-+    return $self;
- }
- 
- package OVER;
- 
- use overload
--	'+'		=> \&plus,
--	'""'	=> sub { ref $_[0] };
-+    '+'     => \&plus,
-+    '""'    => sub { ref $_[0] };
- 
- sub plus {
--	return 314;
-+    return 314;
- }
- 
- sub make {
--	my $self = bless {}, shift;
--	my $ref = REF_TO_OVER->make($self);
--	$self->{ref} = $ref;
--	return $self;
-+    my $self = bless {}, shift;
-+    my $ref = REF_TO_OVER->make($self);
-+    $self->{ref} = $ref;
-+    return $self;
- }
- 
- package main;
-@@ -86,7 +83,8 @@ is($b + $b, 314);
- my $f = '';
- if (ord ('A') == 193) { # EBCDIC.
-     $f = unpack 'u', q{7!084$0S(P>)MUN7%V=/6P<0*!**5EJ8`};
--}else {
-+}
-+else {
-     $f = unpack 'u', q{7!084$0Q(05-?3U9%4DQ/040*!'-N;W<`};
- }
- 
-@@ -103,12 +101,11 @@ is($$$t, 'snow');
- #---
- # blessed reference to overloaded object.
- {
--  my $a = bless [88], 'OVERLOADED';
--  my $c = thaw freeze bless \$a, 'main';
--  is(ref $c, 'main');
--  is(ref $$c, 'OVERLOADED');
--  is("$$c", "88");
--
-+    my $a = bless [88], 'OVERLOADED';
-+    my $c = thaw freeze bless \$a, 'main';
-+    is(ref $c, 'main');
-+    is(ref $$c, 'OVERLOADED');
-+    is("$$c", "88");
- }
- 
- 1;
-diff --git a/t/recurse.t b/t/recurse.t
-index 6f82169..f1d330a 100644
---- a/t/recurse.t
-+++ b/t/recurse.t
-@@ -1,20 +1,13 @@
- #!./perl
- #
- #  Copyright (c) 1995-2000, Raphael Manfredi
--#  
-+#
- #  You may redistribute only under the same terms as Perl 5, as specified
- #  in the README file that comes with the distribution.
--#  
--use Config;
--
--sub BEGIN {
--    unshift @INC, 't';
--    unshift @INC, 't/compat' if $] < 5.006002;
--    if ($ENV{PERL_CORE} and $Config{'extensions'} !~ /\bStorable\b/) {
--        print "1..0 # Skip: Storable was not built\n";
--        exit 0;
--    }
--}
-+#
-+
-+use strict;
-+use warnings;
- 
- use Storable qw(freeze thaw dclone);
- 
-@@ -26,7 +19,7 @@ package OBJ_REAL;
- 
- use Storable qw(freeze thaw);
- 
--@x = ('a', 1);
-+my @x = ('a', 1);
- 
- sub make { bless [], shift }
- 
-@@ -106,9 +99,9 @@ package OBJ_REAL2;
- 
- use Storable qw(freeze thaw);
- 
--$MAX = 20;
--$recursed = 0;
--$hook_called = 0;
-+our $MAX = 20;
-+our $recursed = 0;
-+our $hook_called = 0;
- 
- sub make { bless [], shift }
- 
-@@ -196,10 +189,10 @@ sub new {
-     my $class = shift;
-     return bless {
-         a => 'dummy',
--        b => [ 
-+        b => [
-             Foo->new(1),
--            Foo->new(2), # Second instance of a Foo 
--          ]
-+            Foo->new(2), # Second instance of a Foo
-+        ]
-     }, $class;
- }
- 
-@@ -216,7 +209,7 @@ sub STORABLE_thaw {
- 
- package main;
- 
--my $bar = new Bar;
-+my $bar = Bar->new;
- my $bar2 = thaw freeze $bar;
- 
- is(ref($bar2), 'Bar');
-@@ -351,7 +344,7 @@ eval {
-     dclone $t;
- };
- like $@, qr/Max\. recursion depth with nested structures exceeded/,
--      'Caught aref stack overflow '.MAX_DEPTH*2;
-+    'Caught aref stack overflow '.MAX_DEPTH*2;
- 
- if ($ENV{APPVEYOR} and length(pack "p", "") >= 8) {
-     # TODO: need to repro this fail on a small machine.
-@@ -366,7 +359,7 @@ else {
-         dclone $t;
-     };
-     like $@, qr/Max\. recursion depth with nested structures exceeded/,
--      'Caught href stack overflow '.MAX_DEPTH_HASH*2;
-+        'Caught href stack overflow '.MAX_DEPTH_HASH*2;
- }
- 
- {
-@@ -378,5 +371,5 @@ else {
-         push @tt, $t;
-     }
-     ok(eval { dclone \@tt; 1 },
--       "low depth structure shouldn't be treated as nested");
-+        "low depth structure shouldn't be treated as nested");
- }
-diff --git a/t/regexp.t b/t/regexp.t
-index 6c6b1d5..e4bff60 100644
---- a/t/regexp.t
-+++ b/t/regexp.t
-@@ -1,4 +1,4 @@
--#!perl -w
-+#!./perl -w
- use strict;
- use Storable "dclone";
- use Test::More;
-@@ -6,7 +6,7 @@ use Test::More;
- my $version = int(($]-5)*1000);
- 
- $version >= 8
--  or plan skip_all => "regexps not supported before 5.8";
-+    or plan skip_all => "regexps not supported before 5.8";
- 
- my @tests;
- while (<DATA>) {
-@@ -30,9 +30,9 @@ while (<DATA>) {
-     }
-     my @match = split /\s*,\s*/, $match;
-     for my $m (@match) {
--	my $not = $m =~ s/^!//;
--	my $cmatch = eval $m;
--	die if $@;
-+        my $not = $m =~ s/^!//;
-+        my $cmatch = eval $m;
-+        die if $@;
-         push @tests, [ $code, $not, $cmatch, $m, $name ];
-     }
- }
-@@ -42,7 +42,7 @@ plan tests => 10 + 3*scalar(@tests);
- SKIP:
- {
-     $version >= 14 && $version < 20
--      or skip "p introduced in 5.14, pointless from 5.20", 4;
-+        or skip "p introduced in 5.14, pointless from 5.20", 4;
-     my $q1 = eval "qr/b/p";
-     my $q2 = eval "qr/b/";
-     my $c1 = dclone($q1);
-@@ -56,7 +56,7 @@ SKIP:
- SKIP:
- {
-     $version >= 24
--      or skip "n introduced in 5.22", 4;
-+        or skip "n introduced in 5.22", 4;
-     my $c1 = dclone(eval "qr/(\\w)/");
-     my $c2 = dclone(eval "qr/(\\w)/n");
-     ok("a" =~ $c1, "a matches $c1");
-@@ -68,7 +68,7 @@ SKIP:
- SKIP:
- {
-     $version >= 8
--      or skip "Cannot retrieve before 5.8", 1;
-+        or skip "Cannot retrieve before 5.8", 1;
-     my $x;
-     my $re = qr/a(?{ $x = 1 })/;
-     use re 'eval';
-@@ -82,27 +82,27 @@ for my $test (@tests) {
-     my $qr = eval $code;
-     die "Could not compile $code: $@" if $@;
-     if ($not) {
--	unlike($match, $qr, "$name: pre(not) match $matchc");
-+        unlike($match, $qr, "$name: pre(not) match $matchc");
-     }
-     else {
--	like($match, $qr, "$name: prematch $matchc");
-+        like($match, $qr, "$name: prematch $matchc");
-     }
-     my $qr2 = dclone($qr);
-     if ($not) {
--	unlike($match, $qr2, "$name: (not) match $matchc");
-+        unlike($match, $qr2, "$name: (not) match $matchc");
-     }
-     else {
--	like($match, $qr2, "$name: match $matchc");
-+        like($match, $qr2, "$name: match $matchc");
-     }
- 
-     # this is unlikely to be a problem, but make sure regexps are frozen sanely
-     # as part of a data structure
-     my $a2 = dclone([ $qr ]);
-     if ($not) {
--	unlike($match, $a2->[0], "$name: (not) match $matchc (array)");
-+        unlike($match, $a2->[0], "$name: (not) match $matchc (array)");
-     }
-     else {
--	like($match, $a2->[0], "$name: match $matchc (array)");
-+        like($match, $a2->[0], "$name: match $matchc (array)");
-     }
- }
- 
-diff --git a/t/restrict.t b/t/restrict.t
-index 36a9179..026d635 100644
---- a/t/restrict.t
-+++ b/t/restrict.t
-@@ -1,30 +1,22 @@
- #!./perl -w
- #
- #  Copyright 2002, Larry Wall.
--#  
-+#
- #  You may redistribute only under the same terms as Perl 5, as specified
- #  in the README file that comes with the distribution.
- #
- 
-+use strict;
-+use warnings;
-+
- sub BEGIN {
--    unshift @INC, 't';
--    unshift @INC, 't/compat' if $] < 5.006002;
--    if ($ENV{PERL_CORE}){
--        require Config;
--        if ($Config::Config{'extensions'} !~ /\bStorable\b/) {
--            print "1..0 # Skip: Storable was not built\n";
-+    if (!eval "require Hash::Util") {
-+        if ($@ =~ /Can\'t locate Hash\/Util\.pm in \@INC/s) {
-+            print "1..0 # Skip: No Hash::Util:\n";
-             exit 0;
-+        } else {
-+            die;
-         }
--    } else {
--	if (!eval "require Hash::Util") {
--            if ($@ =~ /Can\'t locate Hash\/Util\.pm in \@INC/s) {
--                print "1..0 # Skip: No Hash::Util:\n";
--                exit 0;
--            } else {
--                die;
--            }
--        }
--	unshift @INC, 't';
-     }
- }
- 
-@@ -46,81 +38,81 @@ my $test;
- package Restrict_Test;
- 
- sub me_second {
--  return (undef, $_[0]);
-+    return (undef, $_[0]);
- }
- 
- package main;
- 
- sub freeze_thaw {
--  my $temp = freeze $_[0];
--  return thaw $temp;
-+    my $temp = freeze $_[0];
-+    return thaw $temp;
- }
- 
- sub testit {
--  my $hash = shift;
--  my $cloner = shift;
--  my $copy = &$cloner($hash);
-+    my $hash = shift;
-+    my $cloner = shift;
-+    my $copy = &$cloner($hash);
- 
--  my @in_keys = sort keys %$hash;
--  my @out_keys = sort keys %$copy;
--  is("@in_keys", "@out_keys", "keys match after deep clone");
-+    my @in_keys = sort keys %$hash;
-+    my @out_keys = sort keys %$copy;
-+    is("@in_keys", "@out_keys", "keys match after deep clone");
- 
--  # $copy = $hash;	# used in initial debug of the tests
-+    # $copy = $hash;    # used in initial debug of the tests
- 
--  is(Internals::SvREADONLY(%$copy), 1, "cloned hash restricted?");
-+    is(Internals::SvREADONLY(%$copy), 1, "cloned hash restricted?");
- 
--  is(Internals::SvREADONLY($copy->{question}), 1,
--     "key 'question' not locked in copy?");
-+    is(Internals::SvREADONLY($copy->{question}), 1,
-+        "key 'question' not locked in copy?");
- 
--  is(Internals::SvREADONLY($copy->{answer}), '',
--     "key 'answer' not locked in copy?");
-+    is(Internals::SvREADONLY($copy->{answer}), '',
-+        "key 'answer' not locked in copy?");
- 
--  eval { $copy->{extra} = 15 } ;
--  is($@, '', "Can assign to reserved key 'extra'?");
-+    eval { $copy->{extra} = 15 } ;
-+    is($@, '', "Can assign to reserved key 'extra'?");
- 
--  eval { $copy->{nono} = 7 } ;
--  isnt($@, '', "Can not assign to invalid key 'nono'?");
-+    eval { $copy->{nono} = 7 } ;
-+    isnt($@, '', "Can not assign to invalid key 'nono'?");
- 
--  is(exists $copy->{undef}, 1, "key 'undef' exists");
-+    is(exists $copy->{undef}, 1, "key 'undef' exists");
- 
--  is($copy->{undef}, undef, "value for key 'undef' is undefined");
-+    is($copy->{undef}, undef, "value for key 'undef' is undefined");
- }
- 
- for $Storable::canonical (0, 1) {
--  for my $cloner (\&dclone, \&freeze_thaw) {
--    print "# \$Storable::canonical = $Storable::canonical\n";
--    testit (\%hash, $cloner);
--    my $object = \%hash;
--    # bless {}, "Restrict_Test";
--
--    my %hash2;
--    $hash2{"k$_"} = "v$_" for 0..16;
--    lock_hash %hash2;
--    for (0..16) {
--      unlock_value %hash2, "k$_";
--      delete $hash2{"k$_"};
--    }
--    my $copy = &$cloner(\%hash2);
-+    for my $cloner (\&dclone, \&freeze_thaw) {
-+        print "# \$Storable::canonical = $Storable::canonical\n";
-+        testit (\%hash, $cloner);
-+        my $object = \%hash;
-+        # bless {}, "Restrict_Test";
-+
-+        my %hash2;
-+        $hash2{"k$_"} = "v$_" for 0..16;
-+        lock_hash %hash2;
-+        for (0..16) {
-+            unlock_value %hash2, "k$_";
-+            delete $hash2{"k$_"};
-+        }
-+        my $copy = &$cloner(\%hash2);
- 
--    for (0..16) {
--      my $k = "k$_";
--      eval { $copy->{$k} = undef } ;
--      is($@, '', "Can assign to reserved key '$k'?");
--    }
-+        for (0..16) {
-+            my $k = "k$_";
-+            eval { $copy->{$k} = undef } ;
-+            is($@, '', "Can assign to reserved key '$k'?");
-+        }
- 
--    my %hv;
--    $hv{a} = __PACKAGE__;
--    lock_keys %hv;
--    my $hv2 = &$cloner(\%hv);
--    ok eval { $$hv2{a} = 70 }, 'COWs do not become read-only';
--  }
-+        my %hv;
-+        $hv{a} = __PACKAGE__;
-+        lock_keys %hv;
-+        my $hv2 = &$cloner(\%hv);
-+        ok eval { $$hv2{a} = 70 }, 'COWs do not become read-only';
-+    }
- }
- 
- # [perl #73972]
- # broken again with cperl PERL_PERTURB_KEYS_TOP.
- SKIP: {
-     skip "TODO restricted Storable hashes broken with PERL_PERTURB_KEYS_TOP", 1
--         if !$Storable::DEBUGME && $Config{usecperl};
-+        if !$Storable::DEBUGME && $Config{usecperl};
-     for my $n (1..100) {
-         my @keys = map { "FOO$_" } (1..$n);
- 
-diff --git a/t/retrieve.t b/t/retrieve.t
-index 0412772..7e57753 100644
---- a/t/retrieve.t
-+++ b/t/retrieve.t
-@@ -2,24 +2,16 @@
- #
- #  Copyright (c) 1995-2000, Raphael Manfredi
- #  Copyright (c) 2017, cPanel Inc
--#  
-+#
- #  You may redistribute only under the same terms as Perl 5, as specified
- #  in the README file that comes with the distribution.
- #
- 
- sub BEGIN {
--    unshift @INC, 'dist/Storable/t' if $ENV{PERL_CORE} and -d 'dist/Storable/t';
--    unshift @INC, 't';
--    unshift @INC, 't/compat' if $] < 5.006002;
--    require Config; import Config;
--    if ($ENV{PERL_CORE} and $Config{'extensions'} !~ /\bStorable\b/) {
--        print "1..0 # Skip: Storable was not built\n";
--        exit 0;
--    }
--    require 'st-dump.pl';
-+    unshift @INC, 't/lib';
- }
- 
--
-+use STDump;
- use Storable qw(store retrieve nstore);
- use Test::More tests => 20;
- 
-@@ -29,7 +21,7 @@ $c = bless {}, CLASS;
- $c->{attribute} = 'attrval';
- %a = ('key', 'value', 1, 0, $a, $b, 'cvar', \$c);
- @a = ('first', '', undef, 3, -4, -3.14159, 456, 4.5,
--	$b, \$a, $a, $c, \$c, \%a);
-+    $b, \$a, $a, $c, \$c, \%a);
- 
- isnt(store(\@a, "store$$"), undef);
- is(Storable::last_op_in_netorder(), '');
-@@ -45,9 +37,9 @@ $nroot = retrieve('nstore');
- isnt($root, undef);
- is(Storable::last_op_in_netorder(), 1);
- 
--$d1 = &dump($root);
-+$d1 = stdump($root);
- isnt($d1, undef);
--$d2 = &dump($nroot);
-+$d2 = stdump($nroot);
- isnt($d2, undef);
- 
- is($d1, $d2);
-@@ -81,7 +73,7 @@ SKIP:
-     # the test allocates 2GB, but other memory is allocated too, so we want
-     # at least 3
-     $ENV{PERL_TEST_MEMORY} && $ENV{PERL_TEST_MEMORY} >= 3
--      or skip "over 2GB memory needed for this test", 2;
-+        or skip "over 2GB memory needed for this test", 2;
-     # len<I32, len>127: stack overflow
-     my $retrieve_hook = "\x04\x0a\x08\x31\x32\x33\x34\x35\x36\x37\x38\x04\x08\x08\x08\x13\x04\x49\xfe\xf4\x7f\x72\x6e\x61\x6c\x73\x02\x00\x00\x00\x00";
-     my $x = eval { Storable::mretrieve($retrieve_hook); };
-diff --git a/t/robust.t b/t/robust.t
-index 27f5fc0..639fdfc 100644
---- a/t/robust.t
-+++ b/t/robust.t
-@@ -1,9 +1,12 @@
--#!/usr/bin/perl
-+#!./perl
- 
- # This test script checks that Storable will load properly if someone
- # is incorrectly messing with %INC to hide Log::Agent.  No, no-one should
- # really be doing this, but, then, it *used* to work!
- 
-+use strict;
-+use warnings;
-+
- use Test::More;
- plan tests => 1;
- 
-diff --git a/t/sig_die.t b/t/sig_die.t
-index 3ea2df4..3c150a8 100644
---- a/t/sig_die.t
-+++ b/t/sig_die.t
-@@ -6,17 +6,8 @@
- #  in the README file that comes with the distribution.
- #
- 
--sub BEGIN {
--    unshift @INC, 't';
--    unshift @INC, 't/compat' if $] < 5.006002;
--    require Config; import Config;
--    if ($ENV{PERL_CORE} and $Config{'extensions'} !~ /\bStorable\b/) {
--        print "1..0 # Skip: Storable was not built\n";
--        exit 0;
--    }
--}
--
- use strict;
-+use warnings;
- use Test::More tests => 1;
- 
- my @warns;
-diff --git a/t/st-dump.pl b/t/st-dump.pl
-deleted file mode 100644
-index 50d8712..0000000
---- a/t/st-dump.pl
-+++ /dev/null
-@@ -1,136 +0,0 @@
--#
--#  Copyright (c) 1995-2000, Raphael Manfredi
--#  
--#  You may redistribute only under the same terms as Perl 5, as specified
--#  in the README file that comes with the distribution.
--#
--
--package dump;
--use Carp;
--
--%dump = (
--	'SCALAR'	=> 'dump_scalar',
--	'LVALUE'	=> 'dump_scalar',
--	'ARRAY'		=> 'dump_array',
--	'HASH'		=> 'dump_hash',
--	'REF'		=> 'dump_ref',
--);
--
--# Given an object, dump its transitive data closure
--sub main::dump {
--	my ($object) = @_;
--	croak "Not a reference!" unless ref($object);
--	local %dumped;
--	local %object;
--	local $count = 0;
--	local $dumped = '';
--	&recursive_dump($object, 1);
--	return $dumped;
--}
--
--# This is the root recursive dumping routine that may indirectly be
--# called by one of the routine it calls...
--# The link parameter is set to false when the reference passed to
--# the routine is an internal temporary variable, implying the object's
--# address is not to be dumped in the %dumped table since it's not a
--# user-visible object.
--sub recursive_dump {
--	my ($object, $link) = @_;
--
--	# Get something like SCALAR(0x...) or TYPE=SCALAR(0x...).
--	# Then extract the bless, ref and address parts of that string.
--
--	my $what = "$object";		# Stringify
--	my ($bless, $ref, $addr) = $what =~ /^(\w+)=(\w+)\((0x.*)\)$/;
--	($ref, $addr) = $what =~ /^(\w+)\((0x.*)\)$/ unless $bless;
--
--	# Special case for references to references. When stringified,
--	# they appear as being scalars. However, ref() correctly pinpoints
--	# them as being references indirections. And that's it.
--
--	$ref = 'REF' if ref($object) eq 'REF';
--
--	# Make sure the object has not been already dumped before.
--	# We don't want to duplicate data. Retrieval will know how to
--	# relink from the previously seen object.
--
--	if ($link && $dumped{$addr}++) {
--		my $num = $object{$addr};
--		$dumped .= "OBJECT #$num seen\n";
--		return;
--	}
--
--	my $objcount = $count++;
--	$object{$addr} = $objcount;
--
--	# Call the appropriate dumping routine based on the reference type.
--	# If the referenced was blessed, we bless it once the object is dumped.
--	# The retrieval code will perform the same on the last object retrieved.
--
--	croak "Unknown simple type '$ref'" unless defined $dump{$ref};
--
--	&{$dump{$ref}}($object);	# Dump object
--	&bless($bless) if $bless;	# Mark it as blessed, if necessary
--
--	$dumped .= "OBJECT $objcount\n";
--}
--
--# Indicate that current object is blessed
--sub bless {
--	my ($class) = @_;
--	$dumped .= "BLESS $class\n";
--}
--
--# Dump single scalar
--sub dump_scalar {
--	my ($sref) = @_;
--	my $scalar = $$sref;
--	unless (defined $scalar) {
--		$dumped .= "UNDEF\n";
--		return;
--	}
--	my $len = length($scalar);
--	$dumped .= "SCALAR len=$len $scalar\n";
--}
--
--# Dump array
--sub dump_array {
--	my ($aref) = @_;
--	my $items = 0 + @{$aref};
--	$dumped .= "ARRAY items=$items\n";
--	foreach $item (@{$aref}) {
--		unless (defined $item) {
--			$dumped .= 'ITEM_UNDEF' . "\n";
--			next;
--		}
--		$dumped .= 'ITEM ';
--		&recursive_dump(\$item, 1);
--	}
--}
--
--# Dump hash table
--sub dump_hash {
--	my ($href) = @_;
--	my $items = scalar(keys %{$href});
--	$dumped .= "HASH items=$items\n";
--	foreach $key (sort keys %{$href}) {
--		$dumped .= 'KEY ';
--		&recursive_dump(\$key, undef);
--		unless (defined $href->{$key}) {
--			$dumped .= 'VALUE_UNDEF' . "\n";
--			next;
--		}
--		$dumped .= 'VALUE ';
--		&recursive_dump(\$href->{$key}, 1);
--	}
--}
--
--# Dump reference to reference
--sub dump_ref {
--	my ($rref) = @_;
--	my $deref = $$rref;				# Follow reference to reference
--	$dumped .= 'REF ';
--	&recursive_dump($deref, 1);		# $dref is a reference
--}
--
--1;
-diff --git a/t/store.t b/t/store.t
-index 45af0b2..e8ca167 100644
---- a/t/store.t
-+++ b/t/store.t
-@@ -6,86 +6,83 @@
- #  in the README file that comes with the distribution.
- #
- 
-+use strict;
-+use warnings;
-+
- sub BEGIN {
--    unshift @INC, 't';
--    unshift @INC, 't/compat' if $] < 5.006002;
--    require Config; import Config;
--    if ($ENV{PERL_CORE} and $Config{'extensions'} !~ /\bStorable\b/) {
--        print "1..0 # Skip: Storable was not built\n";
--        exit 0;
--    }
--    require 'st-dump.pl';
-+    unshift @INC, 't/lib';
- }
- 
-+use STDump;
- # $Storable::DEBUGME = 1;
- use Storable qw(store retrieve store_fd nstore_fd fd_retrieve);
- 
- use Test::More tests => 25;
- 
--$a = 'toto';
--$b = \$a;
--$c = bless {}, CLASS;
-+my $a = 'toto';
-+my $b = \$a;
-+my $c = bless {}, 'CLASS';
- $c->{attribute} = 'attrval';
--%a = ('key', 'value', 1, 0, $a, $b, 'cvar', \$c);
--@a = ('first', undef, 3, -4, -3.14159, 456, 4.5,
--	$b, \$a, $a, $c, \$c, \%a);
-+my %a = ('key', 'value', 1, 0, $a, $b, 'cvar', \$c);
-+my @a = ('first', undef, 3, -4, -3.14159, 456, 4.5,
-+    $b, \$a, $a, $c, \$c, \%a);
- 
- isnt(store(\@a, "store$$"), undef);
- 
--$dumped = &dump(\@a);
-+my $dumped = stdump(\@a);
- isnt($dumped, undef);
- 
--$root = retrieve("store$$");
-+my $root = retrieve("store$$");
- isnt($root, undef);
- 
--$got = &dump($root);
-+my $got = stdump($root);
- isnt($got, undef);
- 
- is($got, $dumped);
- 
- 1 while unlink "store$$";
- 
--package FOO; @ISA = qw(Storable);
-+package FOO; our @ISA = qw(Storable);
- 
- sub make {
--	my $self = bless {};
--	$self->{key} = \%main::a;
--	return $self;
-+    my $self = bless {};
-+    $self->{key} = \%a;
-+    return $self;
- };
- 
- package main;
- 
--$foo = FOO->make;
-+my $foo = FOO->make;
- isnt($foo->store("store$$"), undef);
- 
--isnt(open(OUT, '>>', "store$$"), undef);
--binmode OUT;
-+isnt(open(my $OUT, '>>', "store$$"), undef);
-+binmode $OUT;
- 
--isnt(store_fd(\@a, ::OUT), undef);
--isnt(nstore_fd($foo, ::OUT), undef);
--isnt(nstore_fd(\%a, ::OUT), undef);
-+isnt(store_fd(\@a, $OUT), undef);
-+isnt(nstore_fd($foo, $OUT), undef);
-+isnt(nstore_fd(\%a, $OUT), undef);
- 
--isnt(close(OUT), undef);
-+isnt(close($OUT), undef);
- 
--isnt(open(OUT, "store$$"), undef);
-+isnt(open($OUT, '<', "store$$"), undef);
- 
--$r = fd_retrieve(::OUT);
-+my $r = fd_retrieve($OUT);
- isnt($r, undef);
--is(&dump($r), &dump($foo));
-+is(stdump($r), stdump($foo));
- 
--$r = fd_retrieve(::OUT);
-+$r = fd_retrieve($OUT);
- isnt($r, undef);
--is(&dump($r), &dump(\@a));
-+is(stdump($r), stdump(\@a));
- 
--$r = fd_retrieve(main::OUT);
-+$r = fd_retrieve($OUT);
- isnt($r, undef);
--is(&dump($r), &dump($foo));
-+is(stdump($r), stdump($foo));
- 
--$r = fd_retrieve(::OUT);
-+$r = fd_retrieve($OUT);
- isnt($r, undef);
--is(&dump($r), &dump(\%a));
-+is(stdump($r), stdump(\%a));
- 
--eval { $r = fd_retrieve(::OUT); };
-+eval { $r = fd_retrieve($OUT); };
- isnt($@, '');
- 
- {
-@@ -105,12 +102,12 @@ isnt($@, '');
- {
- 
-     my $frozen =
--      "\x70\x73\x74\x30\x04\x0a\x08\x31\x32\x33\x34\x35\x36\x37\x38\x04\x08\x08\x08\x03\xff\x00\x00\x00\x19\x08\xff\x00\x00\x00\x08\x08\xf9\x16\x16\x13\x16\x10\x10\x10\xff\x15\x16\x16\x16\x1e\x16\x16\x16\x16\x16\x16\x16\x16\x16\x16\x13\xf0\x16\x16\x16\xfe\x16\x41\x41\x41\x41\xe8\x03\x41\x41\x41\x41\x41\x41\x41\x41\x51\x41\xa9\xac\xac\xac\xac\xac\xac\xac\xac\xac\xac\xac\xac\xac\xac\xac\xac\xac\xac\xac\xac\xb8\xac\xac\xac\xac\xac\xac\xac\xac\x9a\xac\xac\xac\xac\xac\xac\xac\xac\xac\x93\xac\xac\xac\xac\xac\xac\xac\xac\xac\xac\xac\xac\xac\xac\xac\xac\xac\xac\xac\xac\xac\xac\xac\xac\x00\x64\xac\xa8\xac\xac\xac\xac\xac\xac\xac\xac\xac\xac\xac\x2c\xac\x41\x41\x41\x41\x41\x41\x41\x41\x41\x00\x80\x41\x80\x41\x41\x41\x41\x41\x41\x51\x41\xac\xac\xac";
-+        "\x70\x73\x74\x30\x04\x0a\x08\x31\x32\x33\x34\x35\x36\x37\x38\x04\x08\x08\x08\x03\xff\x00\x00\x00\x19\x08\xff\x00\x00\x00\x08\x08\xf9\x16\x16\x13\x16\x10\x10\x10\xff\x15\x16\x16\x16\x1e\x16\x16\x16\x16\x16\x16\x16\x16\x16\x16\x13\xf0\x16\x16\x16\xfe\x16\x41\x41\x41\x41\xe8\x03\x41\x41\x41\x41\x41\x41\x41\x41\x51\x41\xa9\xac\xac\xac\xac\xac\xac\xac\xac\xac\xac\xac\xac\xac\xac\xac\xac\xac\xac\xac\xac\xb8\xac\xac\xac\xac\xac\xac\xac\xac\x9a\xac\xac\xac\xac\xac\xac\xac\xac\xac\x93\xac\xac\xac\xac\xac\xac\xac\xac\xac\xac\xac\xac\xac\xac\xac\xac\xac\xac\xac\xac\xac\xac\xac\xac\x00\x64\xac\xa8\xac\xac\xac\xac\xac\xac\xac\xac\xac\xac\xac\x2c\xac\x41\x41\x41\x41\x41\x41\x41\x41\x41\x00\x80\x41\x80\x41\x41\x41\x41\x41\x41\x51\x41\xac\xac\xac";
-     open my $fh, '<', \$frozen;
-     eval { Storable::fd_retrieve($fh); };
-     pass('RT 130635:  no stack smashing error when retrieving hook');
- 
- }
- 
--close OUT or die "Could not close: $!";
-+close $OUT or die "Could not close: $!";
- END { 1 while unlink "store$$" }
-diff --git a/t/testlib.pl b/t/testlib.pl
-deleted file mode 100644
-index a44c338..0000000
---- a/t/testlib.pl
-+++ /dev/null
-@@ -1,38 +0,0 @@
--#!perl -w
--use strict;
--
--our $file = "storable-testfile.$$";
--die "Temporary file '$file' already exists" if -e $file;
--
--END { while (-f $file) {unlink $file or die "Can't unlink '$file': $!" }}
--
--use Storable qw (store retrieve freeze thaw nstore nfreeze);
--
--sub slurp {
--  my $file = shift;
--  local (*FH, $/);
--  open FH, "<", $file or die "Can't open '$file': $!";
--  binmode FH;
--  my $contents = <FH>;
--  die "Can't read $file: $!" unless defined $contents;
--  return $contents;
--}
--
--sub store_and_retrieve {
--  my $data = shift;
--  unlink $file or die "Can't unlink '$file': $!";
--  local *FH;
--  open FH, ">", $file or die "Can't open '$file': $!";
--  binmode FH;
--  print FH $data or die "Can't print to '$file': $!";
--  close FH or die "Can't close '$file': $!";
--
--  return eval {retrieve $file};
--}
--
--sub freeze_and_thaw {
--  my $data = shift;
--  return eval {thaw $data};
--}
--
--1;
-diff --git a/t/threads.t b/t/threads.t
-index 0b34334..646357a 100644
---- a/t/threads.t
-+++ b/t/threads.t
-@@ -16,14 +16,11 @@
- # Storable::init_perinterp() to create a new context for each new
- # thread when it starts
- 
-+use strict;
-+use warnings;
-+
-+use Config;
- sub BEGIN {
--    unshift @INC, 't';
--    unshift @INC, 't/compat' if $] < 5.006002;
--    require Config; import Config;
--    if ($ENV{PERL_CORE} and $Config{'extensions'} !~ /\bStorable\b/) {
--        print "1..0 # Skip: Storable was not built\n";
--        exit 0;
--    }
-     unless ($Config{'useithreads'} and eval { require threads; 1 }) {
-         print "1..0 # Skip: no threads\n";
-         exit 0;
-@@ -35,7 +32,7 @@ sub BEGIN {
-     # - is \W, so can't use \b at start. Negative look ahead and look behind
-     # works at start/end of string, or where preceded/followed by spaces
-     if ($] == 5.008002 and eval q{ $Config{'ccflags'} =~ /(?<!\S)-DDEBUGGING(?!\S)/ }) {
--	# Bug caused by change 21610, fixed by change 21849
-+        # Bug caused by change 21610, fixed by change 21849
-         print "1..0 # Skip: tickles bug in threads combined with -DDEBUGGING on 5.8.2\n";
-         exit 0;
-     }
-@@ -43,8 +40,6 @@ sub BEGIN {
- 
- use Test::More;
- 
--use strict;
--
- use threads;
- use Storable qw(nfreeze);
- 
-diff --git a/t/tied.t b/t/tied.t
-index e8be39e..567fb9e 100644
---- a/t/tied.t
-+++ b/t/tied.t
-@@ -1,130 +1,126 @@
- #!./perl
- #
- #  Copyright (c) 1995-2000, Raphael Manfredi
--#  
-+#
- #  You may redistribute only under the same terms as Perl 5, as specified
- #  in the README file that comes with the distribution.
- #
- 
-+use strict;
-+use warnings;
-+
- sub BEGIN {
--    unshift @INC, 't';
--    unshift @INC, 't/compat' if $] < 5.006002;
--    require Config; import Config;
--    if ($ENV{PERL_CORE} and $Config{'extensions'} !~ /\bStorable\b/) {
--        print "1..0 # Skip: Storable was not built\n";
--        exit 0;
--    }
--    require 'st-dump.pl';
-+    unshift @INC, 't/lib';
- }
--
-+use STDump;
- use Storable qw(freeze thaw);
- $Storable::flags = Storable::FLAGS_COMPAT;
- 
- use Test::More tests => 25;
- 
--($scalar_fetch, $array_fetch, $hash_fetch) = (0, 0, 0);
-+my ($scalar_fetch, $array_fetch, $hash_fetch) = (0, 0, 0);
- 
- package TIED_HASH;
- 
- sub TIEHASH {
--	my $self = bless {}, shift;
--	return $self;
-+    my $self = bless {}, shift;
-+    return $self;
- }
- 
- sub FETCH {
--	my $self = shift;
--	my ($key) = @_;
--	$main::hash_fetch++;
--	return $self->{$key};
-+    my $self = shift;
-+    my ($key) = @_;
-+    $hash_fetch++;
-+    return $self->{$key};
- }
- 
- sub STORE {
--	my $self = shift;
--	my ($key, $value) = @_;
--	$self->{$key} = $value;
-+    my $self = shift;
-+    my ($key, $value) = @_;
-+    $self->{$key} = $value;
- }
- 
- sub FIRSTKEY {
--	my $self = shift;
--	scalar keys %{$self};
--	return each %{$self};
-+    my $self = shift;
-+    scalar keys %{$self};
-+    return each %{$self};
- }
- 
- sub NEXTKEY {
--	my $self = shift;
--	return each %{$self};
-+    my $self = shift;
-+    return each %{$self};
- }
- 
- package TIED_ARRAY;
- 
- sub TIEARRAY {
--	my $self = bless [], shift;
--	return $self;
-+    my $self = bless [], shift;
-+    return $self;
- }
- 
- sub FETCH {
--	my $self = shift;
--	my ($idx) = @_;
--	$main::array_fetch++;
--	return $self->[$idx];
-+    my $self = shift;
-+    my ($idx) = @_;
-+    $array_fetch++;
-+    return $self->[$idx];
- }
- 
- sub STORE {
--	my $self = shift;
--	my ($idx, $value) = @_;
--	$self->[$idx] = $value;
-+    my $self = shift;
-+    my ($idx, $value) = @_;
-+    $self->[$idx] = $value;
- }
- 
- sub FETCHSIZE {
--	my $self = shift;
--	return @{$self};
-+    my $self = shift;
-+    return @{$self};
- }
- 
- package TIED_SCALAR;
- 
- sub TIESCALAR {
--	my $scalar;
--	my $self = bless \$scalar, shift;
--	return $self;
-+    my $scalar;
-+    my $self = bless \$scalar, shift;
-+    return $self;
- }
- 
- sub FETCH {
--	my $self = shift;
--	$main::scalar_fetch++;
--	return $$self;
-+    my $self = shift;
-+    $scalar_fetch++;
-+    return $$self;
- }
- 
- sub STORE {
--	my $self = shift;
--	my ($value) = @_;
--	$$self = $value;
-+    my $self = shift;
-+    my ($value) = @_;
-+    $$self = $value;
- }
- 
- package FAULT;
- 
--$fault = 0;
-+our $fault = 0;
- 
- sub TIESCALAR {
--	my $pkg = shift;
--	return bless [@_], $pkg;
-+    my $pkg = shift;
-+    return bless [@_], $pkg;
- }
- 
- sub FETCH {
--	my $self = shift;
--	my ($href, $key) = @$self;
--	$fault++;
--	untie $href->{$key};
--	return $href->{$key} = 1;
-+    my $self = shift;
-+    my ($href, $key) = @$self;
-+    $fault++;
-+    untie $href->{$key};
-+    return $href->{$key} = 1;
- }
- 
- package main;
- 
--$a = 'toto';
--$b = \$a;
-+my $a = 'toto';
-+my $b = \$a;
- 
--$c = tie %hash, TIED_HASH;
--$d = tie @array, TIED_ARRAY;
--tie $scalar, TIED_SCALAR;
-+my $c = tie my %hash, 'TIED_HASH';
-+my $d = tie my @array, 'TIED_ARRAY';
-+tie my $scalar, 'TIED_SCALAR';
- 
- #$scalar = 'foo';
- #$hash{'attribute'} = \$d;
-@@ -133,30 +129,30 @@ tie $scalar, TIED_SCALAR;
- 
- ### If I say
- ###   $hash{'attribute'} = $d;
--### below, then dump() incorrectly dumps the hash value as a string the second
-+### below, then stdump() incorrectly dumps the hash value as a string the second
- ### time it is reached. I have not investigated enough to tell whether it's
--### a bug in my dump() routine or in the Perl tieing mechanism.
-+### a bug in my stdump() routine or in the Perl tieing mechanism.
- $scalar = 'foo';
- $hash{'attribute'} = 'plain value';
- $array[0] = \$scalar;
- $array[1] = $c;
- $array[2] = \@array;
- 
--@tied = (\$scalar, \@array, \%hash);
--%a = ('key', 'value', 1, 0, $a, $b, 'cvar', \$a, 'scalarref', \$scalar);
--@a = ('first', 3, -4, -3.14159, 456, 4.5, $d, \$d,
--	$b, \$a, $a, $c, \$c, \%a, \@array, \%hash, \@tied);
-+my @tied = (\$scalar, \@array, \%hash);
-+my %a = ('key', 'value', 1, 0, $a, $b, 'cvar', \$a, 'scalarref', \$scalar);
-+my @a = ('first', 3, -4, -3.14159, 456, 4.5, $d, \$d,
-+    $b, \$a, $a, $c, \$c, \%a, \@array, \%hash, \@tied);
- 
- my $f = freeze(\@a);
- isnt($f, undef);
- 
--$dumped = &dump(\@a);
-+my $dumped = stdump(\@a);
- isnt($dumped, undef);
- 
--$root = thaw($f);
-+my $root = thaw($f);
- isnt($root, undef);
- 
--$got = &dump($root);
-+my $got = stdump($root);
- isnt($got, undef);
- 
- ### Used to see the manifestation of the bug documented above.
-@@ -167,25 +163,25 @@ isnt($got, undef);
- 
- is($got, $dumped);
- 
--$g = freeze($root);
-+my $g = freeze($root);
- is(length $f, length $g);
- 
- # Ensure the tied items in the retrieved image work
--@old = ($scalar_fetch, $array_fetch, $hash_fetch);
--@tied = ($tscalar, $tarray, $thash) = @{$root->[$#{$root}]};
--@type = qw(SCALAR  ARRAY  HASH);
-+my @old = ($scalar_fetch, $array_fetch, $hash_fetch);
-+@tied = my ($tscalar, $tarray, $thash) = @{$root->[$#{$root}]};
-+my @type = qw(SCALAR  ARRAY  HASH);
- 
- is(ref tied $$tscalar, 'TIED_SCALAR');
- is(ref tied @$tarray, 'TIED_ARRAY');
- is(ref tied %$thash, 'TIED_HASH');
- 
--@new = ($$tscalar, $tarray->[0], $thash->{'attribute'});
-+my @new = ($$tscalar, $tarray->[0], $thash->{'attribute'});
- @new = ($scalar_fetch, $array_fetch, $hash_fetch);
- 
- # Tests 10..15
--for ($i = 0; $i < @new; $i++) {
--	is($new[$i], $old[$i] + 1);
--	is(ref $tied[$i], $type[$i]);
-+for (my $i = 0; $i < @new; $i++) {
-+    is($new[$i], $old[$i] + 1);
-+    is(ref $tied[$i], $type[$i]);
- }
- 
- # Check undef ties
-@@ -208,14 +204,14 @@ is($FAULT::fault, 2);
-     our ($a, $b);
-     $b = "not ok ";
-     sub TIESCALAR { bless \$a } sub FETCH { "ok " }
--    tie $a, P; my $r = thaw freeze \$a; $b = $$r;
-+    tie $a, 'P'; my $r = thaw freeze \$a; $b = $$r;
-     main::is($b, "ok ");
- }
- 
- {
-     # blessed ref to tied object should be thawed blessed
-     my @a;
--    tie @a, TIED_ARRAY;
-+    tie @a, 'TIED_ARRAY';
-     my $r = bless \@a, 'FOO99';
-     my $f = freeze($r);
-     my $t = thaw($f);
-diff --git a/t/tied_hook.t b/t/tied_hook.t
-index 7f2bc98..ee3b6f2 100644
---- a/t/tied_hook.t
-+++ b/t/tied_hook.t
-@@ -1,155 +1,157 @@
- #!./perl
- #
- #  Copyright (c) 1995-2000, Raphael Manfredi
--#  
-+#
- #  You may redistribute only under the same terms as Perl 5, as specified
- #  in the README file that comes with the distribution.
- #
- 
-+use strict;
-+use warnings;
-+
- sub BEGIN {
--    unshift @INC, 't';
--    unshift @INC, 't/compat' if $] < 5.006002;
--    require Config; import Config;
--    if ($ENV{PERL_CORE} and $Config{'extensions'} !~ /\bStorable\b/) {
--        print "1..0 # Skip: Storable was not built\n";
--        exit 0;
--    }
--    require 'st-dump.pl';
-+    unshift @INC, 't/lib';
- }
- 
-+use STDump;
-+
- use Storable qw(freeze thaw);
- 
- $Storable::flags = Storable::FLAGS_COMPAT;
- 
- use Test::More tests => 28;
- 
--($scalar_fetch, $array_fetch, $hash_fetch) = (0, 0, 0);
-+my (
-+  $scalar_fetch, $scalar_hook1, $scalar_hook2,
-+  $array_fetch, $array_hook1, $array_hook2,
-+  $hash_fetch, $hash_hook1, $hash_hook2,
-+) = (0) x 9;
- 
- package TIED_HASH;
- 
- sub TIEHASH {
--	my $self = bless {}, shift;
--	return $self;
-+    my $self = bless {}, shift;
-+    return $self;
- }
- 
- sub FETCH {
--	my $self = shift;
--	my ($key) = @_;
--	$main::hash_fetch++;
--	return $self->{$key};
-+    my $self = shift;
-+    my ($key) = @_;
-+    $hash_fetch++;
-+    return $self->{$key};
- }
- 
- sub STORE {
--	my $self = shift;
--	my ($key, $value) = @_;
--	$self->{$key} = $value;
-+    my $self = shift;
-+    my ($key, $value) = @_;
-+    $self->{$key} = $value;
- }
- 
- sub FIRSTKEY {
--	my $self = shift;
--	scalar keys %{$self};
--	return each %{$self};
-+    my $self = shift;
-+    scalar keys %{$self};
-+    return each %{$self};
- }
- 
- sub NEXTKEY {
--	my $self = shift;
--	return each %{$self};
-+    my $self = shift;
-+    return each %{$self};
- }
- 
- sub STORABLE_freeze {
--	my $self = shift;
--	$main::hash_hook1++;
--	return join(":", keys %$self) . ";" . join(":", values %$self);
-+    my $self = shift;
-+    $hash_hook1++;
-+    return join(":", keys %$self) . ";" . join(":", values %$self);
- }
- 
- sub STORABLE_thaw {
--	my ($self, $cloning, $frozen) = @_;
--	my ($keys, $values) = split(/;/, $frozen);
--	my @keys = split(/:/, $keys);
--	my @values = split(/:/, $values);
--	for (my $i = 0; $i < @keys; $i++) {
--		$self->{$keys[$i]} = $values[$i];
--	}
--	$main::hash_hook2++;
-+    my ($self, $cloning, $frozen) = @_;
-+    my ($keys, $values) = split(/;/, $frozen);
-+    my @keys = split(/:/, $keys);
-+    my @values = split(/:/, $values);
-+    for (my $i = 0; $i < @keys; $i++) {
-+        $self->{$keys[$i]} = $values[$i];
-+    }
-+    $hash_hook2++;
- }
- 
- package TIED_ARRAY;
- 
- sub TIEARRAY {
--	my $self = bless [], shift;
--	return $self;
-+    my $self = bless [], shift;
-+    return $self;
- }
- 
- sub FETCH {
--	my $self = shift;
--	my ($idx) = @_;
--	$main::array_fetch++;
--	return $self->[$idx];
-+    my $self = shift;
-+    my ($idx) = @_;
-+    $array_fetch++;
-+    return $self->[$idx];
- }
- 
- sub STORE {
--	my $self = shift;
--	my ($idx, $value) = @_;
--	$self->[$idx] = $value;
-+    my $self = shift;
-+    my ($idx, $value) = @_;
-+    $self->[$idx] = $value;
- }
- 
- sub FETCHSIZE {
--	my $self = shift;
--	return @{$self};
-+    my $self = shift;
-+    return @{$self};
- }
- 
- sub STORABLE_freeze {
--	my $self = shift;
--	$main::array_hook1++;
--	return join(":", @$self);
-+    my $self = shift;
-+    $array_hook1++;
-+    return join(":", @$self);
- }
- 
- sub STORABLE_thaw {
--	my ($self, $cloning, $frozen) = @_;
--	@$self = split(/:/, $frozen);
--	$main::array_hook2++;
-+    my ($self, $cloning, $frozen) = @_;
-+    @$self = split(/:/, $frozen);
-+    $array_hook2++;
- }
- 
- package TIED_SCALAR;
- 
- sub TIESCALAR {
--	my $scalar;
--	my $self = bless \$scalar, shift;
--	return $self;
-+    my $scalar;
-+    my $self = bless \$scalar, shift;
-+    return $self;
- }
- 
- sub FETCH {
--	my $self = shift;
--	$main::scalar_fetch++;
--	return $$self;
-+    my $self = shift;
-+    $scalar_fetch++;
-+    return $$self;
- }
- 
- sub STORE {
--	my $self = shift;
--	my ($value) = @_;
--	$$self = $value;
-+    my $self = shift;
-+    my ($value) = @_;
-+    $$self = $value;
- }
- 
- sub STORABLE_freeze {
--	my $self = shift;
--	$main::scalar_hook1++;
--	return $$self;
-+    my $self = shift;
-+    $scalar_hook1++;
-+    return $$self;
- }
- 
- sub STORABLE_thaw {
--	my ($self, $cloning, $frozen) = @_;
--	$$self = $frozen;
--	$main::scalar_hook2++;
-+    my ($self, $cloning, $frozen) = @_;
-+    $$self = $frozen;
-+    $scalar_hook2++;
- }
- 
- package main;
- 
--$a = 'toto';
--$b = \$a;
-+my $a = 'toto';
-+my $b = \$a;
- 
--$c = tie %hash, TIED_HASH;
--$d = tie @array, TIED_ARRAY;
--tie $scalar, TIED_SCALAR;
-+my $c = tie my %hash, 'TIED_HASH';
-+my $d = tie my @array, 'TIED_ARRAY';
-+tie my $scalar, 'TIED_SCALAR';
- 
- $scalar = 'foo';
- $hash{'attribute'} = 'plain value';
-@@ -158,43 +160,43 @@ $array[1] = $c;
- $array[2] = \@array;
- $array[3] = "plaine scalaire";
- 
--@tied = (\$scalar, \@array, \%hash);
--%a = ('key', 'value', 1, 0, $a, $b, 'cvar', \$a, 'scalarref', \$scalar);
--@a = ('first', 3, -4, -3.14159, 456, 4.5, $d, \$d,
--	$b, \$a, $a, $c, \$c, \%a, \@array, \%hash, \@tied);
-+my @tied = (\$scalar, \@array, \%hash);
-+my %a = ('key', 'value', 1, 0, $a, $b, 'cvar', \$a, 'scalarref', \$scalar);
-+my @a = ('first', 3, -4, -3.14159, 456, 4.5, $d, \$d,
-+    $b, \$a, $a, $c, \$c, \%a, \@array, \%hash, \@tied);
- 
- my $f = freeze(\@a);
- isnt($f, undef);
--$dumped = &dump(\@a);
-+my $dumped = stdump(\@a);
- isnt($dumped, undef);
- 
--$root = thaw($f);
-+my $root = thaw($f);
- isnt($root, undef);
- 
--$got = &dump($root);
-+my $got = stdump($root);
- isnt($got, undef);
- 
--isnt($got, $dumped);		# our hooks did not handle refs in array
-+isnt($got, $dumped);            # our hooks did not handle refs in array
- 
--$g = freeze($root);
-+my $g = freeze($root);
- is(length $f, length $g);
- 
- # Ensure the tied items in the retrieved image work
--@old = ($scalar_fetch, $array_fetch, $hash_fetch);
--@tied = ($tscalar, $tarray, $thash) = @{$root->[$#{$root}]};
--@type = qw(SCALAR  ARRAY  HASH);
-+my @old = ($scalar_fetch, $array_fetch, $hash_fetch);
-+@tied = my ($tscalar, $tarray, $thash) = @{$root->[$#{$root}]};
-+my @type = qw(SCALAR  ARRAY  HASH);
- 
- is(ref tied $$tscalar, 'TIED_SCALAR');
- is(ref tied @$tarray, 'TIED_ARRAY');
- is(ref tied %$thash, 'TIED_HASH');
- 
--@new = ($$tscalar, $tarray->[0], $thash->{'attribute'});
-+my @new = ($$tscalar, $tarray->[0], $thash->{'attribute'});
- @new = ($scalar_fetch, $array_fetch, $hash_fetch);
- 
- # Tests 10..15
--for ($i = 0; $i < @new; $i++) {
--    is($new[$i], $old[$i] + 1);		# Tests 10,12,14
--    is(ref $tied[$i], $type[$i]);	# Tests 11,13,15
-+for (my $i = 0; $i < @new; $i++) {
-+    is($new[$i], $old[$i] + 1);         # Tests 10,12,14
-+    is(ref $tied[$i], $type[$i]);       # Tests 11,13,15
- }
- 
- is($$tscalar, 'foo');
-@@ -213,7 +215,7 @@ is($hash_hook2, 1);
- # And now for the "blessed ref to tied hash" with "store hook" test...
- #
- 
--my $bc = bless \%hash, 'FOO';		# FOO does not exist -> no hook
-+my $bc = bless \%hash, 'FOO';           # FOO does not exist -> no hook
- my $bx = thaw freeze $bc;
- 
- is(ref $bx, 'FOO');
-@@ -225,14 +227,14 @@ package TIED_HASH_REF;
- 
- 
- sub STORABLE_freeze {
--        my ($self, $cloning) = @_;
--        return if $cloning;
--        return('ref lost');
-+    my ($self, $cloning) = @_;
-+    return if $cloning;
-+    return('ref lost');
- }
- 
- sub STORABLE_thaw {
--        my ($self, $cloning, $data) = @_;
--        return if $cloning;
-+    my ($self, $cloning, $data) = @_;
-+    return if $cloning;
- }
- 
- package main;
-diff --git a/t/tied_items.t b/t/tied_items.t
-index 3d13971..361727f 100644
---- a/t/tied_items.t
-+++ b/t/tied_items.t
-@@ -1,7 +1,7 @@
- #!./perl
- #
- #  Copyright (c) 1995-2000, Raphael Manfredi
--#  
-+#
- #  You may redistribute only under the same terms as Perl 5, as specified
- #  in the README file that comes with the distribution.
- #
-@@ -10,15 +10,8 @@
- # Tests ref to items in tied hash/array structures.
- #
- 
--sub BEGIN {
--    unshift @INC, 't';
--    unshift @INC, 't/compat' if $] < 5.006002;
--    require Config; import Config;
--    if ($ENV{PERL_CORE} and $Config{'extensions'} !~ /\bStorable\b/) {
--        print "1..0 # Skip: Storable was not built\n";
--        exit 0;
--    }
--}
-+use strict;
-+use warnings;
- 
- $^W = 0;
- 
-@@ -27,27 +20,27 @@ use Test::More tests => 8;
- 
- $Storable::flags = Storable::FLAGS_COMPAT;
- 
--$h_fetches = 0;
-+my $h_fetches = 0;
- 
- sub H::TIEHASH { bless \(my $x), "H" }
- sub H::FETCH { $h_fetches++; $_[1] - 70 }
- 
--tie %h, "H";
-+tie my %h, "H";
- 
--$ref = \$h{77};
--$ref2 = dclone $ref;
-+my $ref = \$h{77};
-+my $ref2 = dclone $ref;
- 
- is($h_fetches, 0);
- is($$ref2, $$ref);
- is($$ref2, 7);
- is($h_fetches, 2);
- 
--$a_fetches = 0;
-+my $a_fetches = 0;
- 
- sub A::TIEARRAY { bless \(my $x), "A" }
- sub A::FETCH { $a_fetches++; $_[1] - 70 }
- 
--tie @a, "A";
-+tie my @a, "A";
- 
- $ref = \$a[78];
- $ref2 = dclone $ref;
-diff --git a/t/tied_reify.t b/t/tied_reify.t
-index 44e8637..40b6a96 100644
---- a/t/tied_reify.t
-+++ b/t/tied_reify.t
-@@ -1,8 +1,11 @@
-+#!./perl
-+use strict;
-+use warnings;
-+
- use Test::More tests => 1;
-- 
-+
- package dumb_thing;
- 
--use strict; use warnings;
- use Tie::Array;
- use Carp;
- use base 'Tie::StdArray';
-@@ -19,7 +22,6 @@ sub TIEARRAY {
- 
- package main;
- 
--use strict; use warnings;
- use Storable qw(freeze thaw);
- 
- my $x = [1,2,3,4];
-diff --git a/t/tied_store.t b/t/tied_store.t
-index c657f95..771a613 100644
---- a/t/tied_store.t
-+++ b/t/tied_store.t
-@@ -1,14 +1,7 @@
- #!./perl
- 
--sub BEGIN {
--    unshift @INC, 't';
--    unshift @INC, 't/compat' if $] < 5.006002;
--    require Config; import Config;
--    if ($ENV{PERL_CORE} and $Config{'extensions'} !~ /\bStorable\b/) {
--        print "1..0 # Skip: Storable was not built\n";
--        exit 0;
--    }
--}
-+use strict;
-+use warnings;
- 
- use Storable ();
- use Test::More tests => 3;
-@@ -20,8 +13,8 @@ package TIED_HASH;
- sub TIEHASH { bless({}, $_[0]) }
- 
- sub STORE {
--	$f = Storable::freeze(\$_[2]);
--	1;
-+    $f = Storable::freeze(\$_[2]);
-+    1;
- }
- 
- package TIED_ARRAY;
-@@ -29,8 +22,8 @@ package TIED_ARRAY;
- sub TIEARRAY { bless({}, $_[0]) }
- 
- sub STORE {
--	$f = Storable::freeze(\$_[2]);
--	1;
-+    $f = Storable::freeze(\$_[2]);
-+    1;
- }
- 
- package TIED_SCALAR;
-@@ -38,8 +31,8 @@ package TIED_SCALAR;
- sub TIESCALAR { bless({}, $_[0]) }
- 
- sub STORE {
--	$f = Storable::freeze(\$_[1]);
--	1;
-+    $f = Storable::freeze(\$_[1]);
-+    1;
- }
- 
- package main;
-diff --git a/t/utf8.t b/t/utf8.t
-index 0f546f0..67063e7 100644
---- a/t/utf8.t
-+++ b/t/utf8.t
-@@ -1,53 +1,44 @@
- #!./perl -w
- #
- #  Copyright (c) 1995-2000, Raphael Manfredi
--#  
-+#
- #  You may redistribute only under the same terms as Perl 5, as specified
- #  in the README file that comes with the distribution.
- #
- 
--sub BEGIN {
--    unshift @INC, 't';
--    unshift @INC, 't/compat' if $] < 5.006002;
--    require Config; import Config;
--    if ($ENV{PERL_CORE} and $Config{'extensions'} !~ /\bStorable\b/) {
--        print "1..0 # Skip: Storable was not built\n";
--        exit 0;
--    }
--}
--
- use strict;
-+use warnings;
- 
- use Storable qw(thaw freeze);
- use Test::More tests => 6;
- 
- my $x = chr(1234);
--is($x, ${thaw freeze \$x});
-+is($x, ${thaw freeze \$x}, "round trip one unicode character");
- 
- # Long scalar
- $x = join '', map {chr $_} (0..1023);
--is($x, ${thaw freeze \$x});
-+is($x, ${thaw freeze \$x}, "round trip Unicode string");
- 
- # Char in the range 127-255 (probably) in utf8.  This just won't work for
- # EBCDIC for early Perls.
- $x = ($] lt 5.007_003) ? chr(175) : chr(utf8::unicode_to_native(175))
--   . chr (256);
-+    . chr (256);
- chop $x;
--is($x, ${thaw freeze \$x});
-+is($x, ${thaw freeze \$x}, "round strip a 128-255 character");
- 
- # Storable needs to cope if a frozen string happens to be internal utf8
- # encoded
- 
- $x = chr 256;
- my $data = freeze \$x;
--is($x, ${thaw $data});
-+is($x, ${thaw $data}, "sanity check for upgraded frozen data");
- 
- $data .= chr 256;
- chop $data;
--is($x, ${thaw $data});
-+is($x, ${thaw $data}, "test for upgraded frozen data");
- 
- 
- $data .= chr 256;
- # This definitely isn't valid
- eval {thaw $data};
--like($@, qr/corrupt.*characters outside/);
-+like($@, qr/corrupt.*characters outside/, "check error handling for added 256 code point");
-diff --git a/t/utf8hash.t b/t/utf8hash.t
-index a2a8725..638076a 100644
---- a/t/utf8hash.t
-+++ b/t/utf8hash.t
-@@ -1,21 +1,15 @@
- #!./perl
- 
-+use strict;
-+use warnings;
-+
- sub BEGIN {
-     if ($] < 5.007) {
--	print "1..0 # Skip: no utf8 hash key support\n";
--	exit 0;
--    }
--    unshift @INC, 't';
--    require Config; import Config;
--    if ($ENV{PERL_CORE}){
--	if($Config{'extensions'} !~ /\bStorable\b/) {
--	    print "1..0 # Skip: Storable was not built\n";
--	    exit 0;
--	}
-+        print "1..0 # Skip: no utf8 hash key support\n";
-+        exit 0;
-     }
- }
- 
--use strict;
- our $DEBUGME = shift || 0;
- use Storable qw(store nstore retrieve thaw freeze);
- {
-@@ -41,9 +35,9 @@ no utf8; # we have a naked 8-bit byte below (in Latin 1, anyway)
- # In Latin 1 -ese the below ord() should end up 0xc0 (192),
- # in EBCDIC 0x64 (100).  Both should end up being UTF-8/UTF-EBCDIC.
- my @ords = (
--	    ord("�"), # LATIN CAPITAL LETTER A WITH GRAVE
--	    0x3000, #IDEOGRAPHIC SPACE
--	   );
-+    ord("�"), # LATIN CAPITAL LETTER A WITH GRAVE
-+    0x3000, #IDEOGRAPHIC SPACE
-+);
- 
- foreach my $i (@ords){
-     my $u = chr($i); utf8::upgrade($u);
-@@ -58,20 +52,20 @@ foreach my $i (@ords){
- 
- sub nkeys($){
-     my $href = shift;
--    return scalar keys %$href; 
-+    return scalar keys %$href;
- }
- 
- my $nk;
--is($nk = nkeys(\%utf8hash), scalar(@ords)*2, 
--   "nasty hash generated (nkeys=$nk)");
-+is($nk = nkeys(\%utf8hash), scalar(@ords)*2,
-+    "nasty hash generated (nkeys=$nk)");
- 
- # now let the show begin!
- 
- my $thawed = thaw(freeze(\%utf8hash));
- 
- is($nk = nkeys($thawed),
--   nkeys(\%utf8hash),
--   "scalar keys \%{\$thawed} (nkeys=$nk)");
-+    nkeys(\%utf8hash),
-+    "scalar keys \%{\$thawed} (nkeys=$nk)");
- for my $k (sort keys %$thawed){
-     is($utf8hash{$k}, $thawed->{$k}, "frozen item chr($utf8hash{$k})");
- }
-@@ -83,8 +77,8 @@ ok((nstore \%utf8hash, $storage), "nstore to $storage");
- ok(($retrieved = retrieve($storage)), "retrieve from $storage");
- 
- is($nk = nkeys($retrieved),
--   nkeys(\%utf8hash),
--   "scalar keys \%{\$retrieved} (nkeys=$nk)");
-+    nkeys(\%utf8hash),
-+    "scalar keys \%{\$retrieved} (nkeys=$nk)");
- for my $k (sort keys %$retrieved){
-     is($utf8hash{$k}, $retrieved->{$k}, "nstored item chr($utf8hash{$k})");
- }
-@@ -94,8 +88,8 @@ unlink $storage;
- ok((store \%utf8hash, $storage), "store to $storage");
- ok(($retrieved = retrieve($storage)), "retrieve from $storage");
- is($nk = nkeys($retrieved),
--   nkeys(\%utf8hash),
--   "scalar keys \%{\$retrieved} (nkeys=$nk)");
-+    nkeys(\%utf8hash),
-+    "scalar keys \%{\$retrieved} (nkeys=$nk)");
- for my $k (sort keys %$retrieved){
-     is($utf8hash{$k}, $retrieved->{$k}, "stored item chr($utf8hash{$k})");
- }
-@@ -106,7 +100,7 @@ $DEBUGME or unlink $storage;
- package Hash_Test;
- 
- sub me_second {
--  return (undef, $_[0]);
-+    return (undef, $_[0]);
- }
- 
- package main;
-@@ -118,15 +112,15 @@ chop $utf8;
- my $bypass = 0;
- 
- sub class_test {
--  my ($object, $package) = @_;
--  unless ($package) {
--    is ref $object, 'HASH', "$object is unblessed";
--    return;
--  }
--  isa_ok ($object, $package);
--  my ($garbage, $copy) = eval {$object->me_second};
--  is $@, "", "check it has correct method";
--  cmp_ok $copy, '==', $object, "and that it returns the same object";
-+    my ($object, $package) = @_;
-+    unless ($package) {
-+        is ref $object, 'HASH', "$object is unblessed";
-+        return;
-+    }
-+    isa_ok ($object, $package);
-+    my ($garbage, $copy) = eval {$object->me_second};
-+    is $@, "", "check it has correct method";
-+    cmp_ok $copy, '==', $object, "and that it returns the same object";
- }
- 
- # Thanks to Dan Kogai for the Kanji for "castle" (which he informs me also
-@@ -134,65 +128,65 @@ sub class_test {
- my %hash = (map {$_, $_} 'castle', "ch\xe5teau", $utf8, "\x{57CE}");
- 
- for my $package ('', 'Hash_Test') {
--  # Run through and sanity check these.
--  if ($package) {
--    bless \%hash, $package;
--  }
--  for (keys %hash) {
--    my $l = 0 + /^\w+$/;
--    my $r = 0 + $hash{$_} =~ /^\w+$/;
--    cmp_ok ($l, '==', $r);
--  }
--
--  # Grr. This cperl mode thinks that ${ is a punctuation variable.
--  # I presume it's punishment for using xemacs rather than emacs. Or OS/2 :-)
--  my $copy = $bypass ? \%hash : ${thaw freeze \\%hash};
--  class_test ($copy, $package);
--
--  for (keys %$copy) {
--    my $l = 0 + /^\w+$/;
--    my $r = 0 + $copy->{$_} =~ /^\w+$/;
--    cmp_ok ($l, '==', $r, sprintf "key length %d", length $_);
--  }
--
--
--  my $bytes = my $char = chr 27182;
--  utf8::encode ($bytes);
--
--  my $orig = {$char => 1};
--  if ($package) {
--    bless $orig, $package;
--  }
--  my $just_utf8 = $bypass ? $orig : ${thaw freeze \$orig};
--  class_test ($just_utf8, $package);
--  cmp_ok (scalar keys %$just_utf8, '==', 1, "1 key in utf8?");
--  cmp_ok ($just_utf8->{$char}, '==', 1, "utf8 key present?");
--  ok (!exists $just_utf8->{$bytes}, "bytes key absent?");
--
--  $orig = {$bytes => 1};
--  if ($package) {
--    bless $orig, $package;
--  }
--  my $just_bytes = $bypass ? $orig : ${thaw freeze \$orig};
--  class_test ($just_bytes, $package);
--
--  cmp_ok (scalar keys %$just_bytes, '==', 1, "1 key in bytes?");
--  cmp_ok ($just_bytes->{$bytes}, '==', 1, "bytes key present?");
--  ok (!exists $just_bytes->{$char}, "utf8 key absent?");
--
--  die sprintf "Both have length %d, which is crazy", length $char
--    if length $char == length $bytes;
--
--  $orig = {$bytes => length $bytes, $char => length $char};
--  if ($package) {
--    bless $orig, $package;
--  }
--  my $both = $bypass ? $orig : ${thaw freeze \$orig};
--  class_test ($both, $package);
--
--  cmp_ok (scalar keys %$both, '==', 2, "2 keys?");
--  cmp_ok ($both->{$bytes}, '==', length $bytes, "bytes key present?");
--  cmp_ok ($both->{$char}, '==', length $char, "utf8 key present?");
-+    # Run through and sanity check these.
-+    if ($package) {
-+        bless \%hash, $package;
-+    }
-+    for (keys %hash) {
-+        my $l = 0 + /^\w+$/;
-+        my $r = 0 + $hash{$_} =~ /^\w+$/;
-+        cmp_ok ($l, '==', $r);
-+    }
-+
-+    # Grr. This cperl mode thinks that ${ is a punctuation variable.
-+    # I presume it's punishment for using xemacs rather than emacs. Or OS/2 :-)
-+    my $copy = $bypass ? \%hash : ${thaw freeze \\%hash};
-+    class_test ($copy, $package);
-+
-+    for (keys %$copy) {
-+        my $l = 0 + /^\w+$/;
-+        my $r = 0 + $copy->{$_} =~ /^\w+$/;
-+        cmp_ok ($l, '==', $r, sprintf "key length %d", length $_);
-+    }
-+
-+
-+    my $bytes = my $char = chr 27182;
-+    utf8::encode ($bytes);
-+
-+    my $orig = {$char => 1};
-+    if ($package) {
-+        bless $orig, $package;
-+    }
-+    my $just_utf8 = $bypass ? $orig : ${thaw freeze \$orig};
-+    class_test ($just_utf8, $package);
-+    cmp_ok (scalar keys %$just_utf8, '==', 1, "1 key in utf8?");
-+    cmp_ok ($just_utf8->{$char}, '==', 1, "utf8 key present?");
-+    ok (!exists $just_utf8->{$bytes}, "bytes key absent?");
-+
-+    $orig = {$bytes => 1};
-+    if ($package) {
-+        bless $orig, $package;
-+    }
-+    my $just_bytes = $bypass ? $orig : ${thaw freeze \$orig};
-+    class_test ($just_bytes, $package);
-+
-+    cmp_ok (scalar keys %$just_bytes, '==', 1, "1 key in bytes?");
-+    cmp_ok ($just_bytes->{$bytes}, '==', 1, "bytes key present?");
-+    ok (!exists $just_bytes->{$char}, "utf8 key absent?");
-+
-+    die sprintf "Both have length %d, which is crazy", length $char
-+        if length $char == length $bytes;
-+
-+    $orig = {$bytes => length $bytes, $char => length $char};
-+    if ($package) {
-+        bless $orig, $package;
-+    }
-+    my $both = $bypass ? $orig : ${thaw freeze \$orig};
-+    class_test ($both, $package);
-+
-+    cmp_ok (scalar keys %$both, '==', 2, "2 keys?");
-+    cmp_ok ($both->{$bytes}, '==', length $bytes, "bytes key present?");
-+    cmp_ok ($both->{$char}, '==', length $char, "utf8 key present?");
- }
- 
- }
-diff --git a/t/weak.t b/t/weak.t
-index 48752fb..e6cde65 100644
---- a/t/weak.t
-+++ b/t/weak.t
-@@ -6,42 +6,40 @@
- #  in the README file that comes with the distribution.
- #
- 
-+use strict;
-+use warnings;
-+
-+use Config;
- sub BEGIN {
--  # This lets us distribute Test::More in t/
--  unshift @INC, 't';
--  unshift @INC, 't/compat' if $] < 5.006002;
--  require Config; import Config;
--  if ($ENV{PERL_CORE} and $Config{'extensions'} !~ /\bStorable\b/) {
--    print "1..0 # Skip: Storable was not built\n";
--    exit 0;
--  }
--  if ($Config{extensions} !~ /\bList\/Util\b/) {
--    print "1..0 # Skip: List::Util was not built\n";
--    exit 0;
--  }
--
--  require Scalar::Util;
--  Scalar::Util->import(qw(weaken isweak));
--  if (grep { /weaken/ } @Scalar::Util::EXPORT_FAIL) {
--    print("1..0 # Skip: No support for weaken in Scalar::Util\n");
--    exit 0;
--  }
-+    if ($Config{extensions} !~ /\bList\/Util\b/) {
-+        print "1..0 # Skip: List::Util was not built\n";
-+        exit 0;
-+    }
-+
-+    require Scalar::Util;
-+    Scalar::Util->import(qw(weaken isweak));
-+    if (grep { /weaken/ } @Scalar::Util::EXPORT_FAIL) {
-+        print("1..0 # Skip: No support for weaken in Scalar::Util\n");
-+        exit 0;
-+    }
-+}
-+
-+BEGIN {
-+    unshift @INC, 't/lib';
- }
- 
- use Test::More 'no_plan';
- use Storable qw (store retrieve freeze thaw nstore nfreeze dclone);
--require 'testlib.pl';
--our $file;
--use strict;
-+use STTestLib qw(write_and_retrieve tempfilename slurp);
- 
- # $Storable::flags = Storable::FLAGS_COMPAT;
- 
- sub tester {
--  my ($contents, $sub, $testersub, $what) = @_;
--  # Test that if we re-write it, everything still works:
--  my $clone = &$sub ($contents);
--  is ($@, "", "There should be no error extracting for $what");
--  &$testersub ($clone, $what);
-+    my ($contents, $sub, $testersub, $what) = @_;
-+    # Test that if we re-write it, everything still works:
-+    my $clone = &$sub ($contents);
-+    is ($@, "", "There should be no error extracting for $what");
-+    &$testersub ($clone, $what);
- }
- 
- my $r = {};
-@@ -60,7 +58,7 @@ ok (isweak($w->[0]), "element 0 is a weak reference");
- package OVERLOADED;
- 
- use overload
--	'""' => sub { $_[0][0] };
-+    '""' => sub { $_[0][0] };
- 
- package main;
- 
-@@ -71,77 +69,83 @@ weaken $o->[0];
- ok (isweak($o->[0]), "element 0 is a weak reference");
- 
- my @tests = (
--[$s1,
-- sub  {
--  my ($clone, $what) = @_;
--  isa_ok($clone,'ARRAY');
--  isa_ok($clone->[0],'HASH');
--  isa_ok($clone->[1],'HASH');
--  ok(!isweak $clone->[0], "Element 0 isn't weak");
--  ok(isweak $clone->[1], "Element 1 is weak");
--}
--],
--# The weak reference needs to hang around long enough for other stuff to
--# be able to make references to it. So try it second.
--[$s0,
-- sub  {
--  my ($clone, $what) = @_;
--  isa_ok($clone,'ARRAY');
--  isa_ok($clone->[0],'HASH');
--  isa_ok($clone->[1],'HASH');
--  ok(isweak $clone->[0], "Element 0 is weak");
--  ok(!isweak $clone->[1], "Element 1 isn't weak");
--}
--],
--[$w,
-- sub  {
--  my ($clone, $what) = @_;
--  isa_ok($clone,'ARRAY');
--  if ($what eq 'nothing') {
--    # We're the original, so we're still a weakref to a hash
--    isa_ok($clone->[0],'HASH');
--    ok(isweak $clone->[0], "Element 0 is weak");
--  } else {
--    is($clone->[0],undef);
--  }
--}
--],
--[$o,
--sub {
--  my ($clone, $what) = @_;
--  isa_ok($clone,'ARRAY');
--  isa_ok($clone->[0],'OVERLOADED');
--  isa_ok($clone->[1],'OVERLOADED');
--  ok(isweak $clone->[0], "Element 0 is weak");
--  ok(!isweak $clone->[1], "Element 1 isn't weak");
--  is ("$clone->[0]", 77, "Element 0 stringifies to 77");
--  is ("$clone->[1]", 77, "Element 1 stringifies to 77");
--}
--],
-+    [
-+        $s1,
-+        sub {
-+            my ($clone, $what) = @_;
-+            isa_ok($clone,'ARRAY');
-+            isa_ok($clone->[0],'HASH');
-+            isa_ok($clone->[1],'HASH');
-+            ok(!isweak $clone->[0], "Element 0 isn't weak");
-+            ok(isweak $clone->[1], "Element 1 is weak");
-+        }
-+    ],
-+    # The weak reference needs to hang around long enough for other stuff to
-+    # be able to make references to it. So try it second.
-+    [
-+        $s0,
-+        sub {
-+            my ($clone, $what) = @_;
-+            isa_ok($clone,'ARRAY');
-+            isa_ok($clone->[0],'HASH');
-+            isa_ok($clone->[1],'HASH');
-+            ok(isweak $clone->[0], "Element 0 is weak");
-+            ok(!isweak $clone->[1], "Element 1 isn't weak");
-+        }
-+    ],
-+    [
-+        $w,
-+        sub {
-+            my ($clone, $what) = @_;
-+            isa_ok($clone,'ARRAY');
-+            if ($what eq 'nothing') {
-+                # We're the original, so we're still a weakref to a hash
-+                isa_ok($clone->[0],'HASH');
-+                ok(isweak $clone->[0], "Element 0 is weak");
-+            } else {
-+                is($clone->[0],undef);
-+            }
-+        }
-+    ],
-+    [
-+        $o,
-+        sub {
-+            my ($clone, $what) = @_;
-+            isa_ok($clone,'ARRAY');
-+            isa_ok($clone->[0],'OVERLOADED');
-+            isa_ok($clone->[1],'OVERLOADED');
-+            ok(isweak $clone->[0], "Element 0 is weak");
-+            ok(!isweak $clone->[1], "Element 1 isn't weak");
-+            is ("$clone->[0]", 77, "Element 0 stringifies to 77");
-+            is ("$clone->[1]", 77, "Element 1 stringifies to 77");
-+        }
-+    ],
- );
- 
- foreach (@tests) {
--  my ($input, $testsub) = @$_;
-+    my ($input, $testsub) = @$_;
-+
-+    tester($input, sub {return shift}, $testsub, 'nothing');
- 
--  tester($input, sub {return shift}, $testsub, 'nothing');
-+    my $file = tempfilename();
- 
--  ok (defined store($input, $file));
-+    ok (defined store($input, $file));
- 
--  # Read the contents into memory:
--  my $contents = slurp ($file);
-+    # Read the contents into memory:
-+    my $contents = slurp ($file);
- 
--  tester($contents, \&store_and_retrieve, $testsub, 'file');
-+    tester($contents, \&write_and_retrieve, $testsub, 'file');
- 
--  # And now try almost everything again with a Storable string
--  my $stored = freeze $input;
--  tester($stored, \&freeze_and_thaw, $testsub, 'string');
-+    # And now try almost everything again with a Storable string
-+    my $stored = freeze $input;
-+    tester($stored, sub { eval { thaw $_[0] } }, $testsub, 'string');
- 
--  ok (defined nstore($input, $file));
-+    ok (defined nstore($input, $file));
- 
--  tester($contents, \&store_and_retrieve, $testsub, 'network file');
-+    tester($contents, \&write_and_retrieve, $testsub, 'network file');
- 
--  $stored = nfreeze $input;
--  tester($stored, \&freeze_and_thaw, $testsub, 'network string');
-+    $stored = nfreeze $input;
-+    tester($stored, sub { eval { thaw $_[0] } }, $testsub, 'network string');
- }
- 
- {
--- 
-2.49.0
-

diff --git a/perl-Storable.spec b/perl-Storable.spec
index 59f51c0..3152ba1 100644
--- a/perl-Storable.spec
+++ b/perl-Storable.spec
@@ -1,17 +1,13 @@
-%global base_version 3.25
+%global base_version 3.41
 Name:           perl-Storable
 Epoch:          1
-Version:        3.37
-Release:        522%{?dist}
+Version:        3.41
+Release:        1%{?dist}
 Summary:        Persistence for Perl data structures
 # Storable.pm:  GPL+ or Artistic
 License:        GPL-1.0-or-later OR Artistic-1.0-Perl
 URL:            https://metacpan.org/release/Storable
-Source0:        https://cpan.metacpan.org/authors/id/N/NW/NWCLARK/Storable-%{base_version}.tar.gz
-# Unbundled from perl 5.37.12
-Patch0:         Storable-3.25-Upgrade-to-3.32.patch
-# Unbundled from perl 5.42.0
-Patch1:         Storable-3.32-Upgrade-to-3.37.patch
+Source0:        https://cpan.metacpan.org/authors/id/H/HA/HAARG/Storable-%{base_version}.tar.gz
 BuildRequires:  coreutils
 BuildRequires:  gcc
 BuildRequires:  make
@@ -145,6 +141,9 @@ make test
 %{_libexecdir}/%{name}
 
 %changelog
+* Mon Jun 08 2026 Jitka Plesnikova <jplesnik@redhat.com> - 1:3.41-1
+- 3.41 bump (rhbz#2485665)
+
 * Sat Jan 17 2026 Fedora Release Engineering <releng@fedoraproject.org> - 1:3.37-522
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_44_Mass_Rebuild
 

diff --git a/sources b/sources
index c1fe2cb..051079e 100644
--- a/sources
+++ b/sources
@@ -1 +1 @@
-SHA512 (Storable-3.25.tar.gz) = a1e0342061bc3fbe04e1041c94004c6dc2fbee10ab49939fe93fa84696829aa32896e6af234a33743c6ecd9e5b0c2e2c623428207e0f04dc01b31caa87f8d73c
+SHA512 (Storable-3.41.tar.gz) = 932d21f51269a035bdb93ad13249214d4ee50010788b71f3efa6511cade53276b7d0501f15f1c016b8d5398435422b52fb30ff9da3140574176c9b8dae740db5

^ permalink raw reply related	[flat|nested] only message in thread

only message in thread, other threads:[~2026-06-08 11:23 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2026-06-08 11:23 [rpms/perl-Storable] rawhide: 3.41 bump (rhbz#2485665) Jitka Plesnikova

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox