NAME
Sereal::Dclone - Deep (recursive) cloning via Sereal
SYNOPSIS
use Sereal::Dclone 'dclone';
my $cloned = dclone $ref;
DESCRIPTION
Sereal::Dclone provides a "dclone" function modeled after the function from Storable, using Sereal for fast serialization.
Sereal is presently known to support serializing SCALAR
, ARRAY
, HASH
, REF
, and Regexp
references. Sereal will also serialize and recreate blessed objects, provided the underlying reference type is supported, or the object class provides FREEZE
and THAW
serialization methods ("FREEZE/THAW CALLBACK MECHANISM" in Sereal::Encoder). Be cautious with cloned objects as only the internal data structure is cloned, and the destructor will still be called when it is destroyed.
FUNCTIONS
Sereal::Dclone provides one function, which is exported on demand.
dclone
my $cloned = dclone $ref;
my $cloned = dclone $ref, {undef_unknown => 1, warn_unknown => 1};
Recursively clones a referenced data structure by serializing and then deserializing it with Sereal. Unlike Storable's dclone, the argument can be any serializable scalar, not just a reference. If an unsupported value is encountered, an exception will be thrown as it cannot be cloned.
Options can be passed to the underlying Sereal::Encoder object in an optional hash reference. To prevent exceptions when serializing unsupported values, the undef_unknown
or stringify_unknown
options may be useful. The croak_on_bless
or no_bless_objects
options can be used to control cloning of objects. freeze_callbacks
is enabled by default.
BUGS
Report any issues on the public bugtracker.
AUTHOR
Dan Book <dbook@cpan.org>
COPYRIGHT AND LICENSE
This software is Copyright (c) 2016 by Dan Book.
This is free software, licensed under:
The Artistic License 2.0 (GPL Compatible)