Storable#

Native implementation of Storable

Provides serialization/deserialization functions for Perl data structures. This module implements a subset of Storable’s functionality compatible with common use cases.

Synopsis#

use Storable qw(freeze thaw dclone store retrieve);

my $frozen = freeze(\%hash);
my $thawed = thaw($frozen);

store(\%hash, '/tmp/data.storable');
my $data = retrieve('/tmp/data.storable');

my $copy = dclone(\@deep_structure);

Functions#

freeze#

Serialize a Perl data structure into a binary string (in-memory). Uses native byte order.

use Storable 'freeze';
my $serialized = freeze(\%hash);

nfreeze#

Serialize a Perl data structure into a binary string using network (big-endian) byte order for portability across architectures.

use Storable 'nfreeze';
my $portable = nfreeze(\@array);

thaw#

Deserialize a binary string (produced by freeze or nfreeze) back into a Perl data structure.

use Storable 'thaw';
my $data = thaw($serialized);

dclone#

Deep-clone a Perl data structure (freeze + thaw in one step). Handles circular references.

use Storable 'dclone';
my $copy = dclone(\%original);

store#

Serialize a data structure and write it to a file. Uses native byte order.

use Storable 'store';
store(\%hash, '/tmp/data.storable');

nstore#

Serialize a data structure and write it to a file using network byte order.

retrieve#

Read a file written by store/nstore and deserialize it back into a data structure.

use Storable 'retrieve';
my $data = retrieve('/tmp/data.storable');

store_fd / nstore_fd#

Serialize a data structure to an open filehandle (native or network byte order).

fd_retrieve#

Deserialize a data structure from an open filehandle.

lock_store / lock_nstore / lock_retrieve#

Locking variants of store, nstore, and retrieve (currently aliases without actual locking).

file_magic#

Return a hash describing the Storable file format magic of a given file.

read_magic#

Return a hash describing the Storable format magic from a binary string header.

stack_depth / stack_depth_hash / recursion_limit / recursion_limit_hash#

Get or set the maximum recursion depth for serialization/deserialization.

Serialization Format#

We use a custom binary format optimized for PetaPerl’s Sv types:

  • Type tag (1 byte)

  • Length-prefixed data where applicable

  • Recursive handling of nested structures

Network Byte Order#

Functions prefixed with ‘n’ (nstore, nfreeze) use big-endian byte order for portability across different architectures. Regular functions use native byte order for speed on local storage.