Clone::Choose3pm
Choose appropriate clone utility
Usage
use Clone::Choose;my $data = {value => 42,href => {set => [ 'foo', 'bar' ],value => 'baz',},};my $cloned_data = clone $data;# it's also possible to use Clone::Choose and pass a clone preferenceuse Clone::Choose qw(:Storable);
Overview
"Clone::Choose" checks several different modules which provides a clone() function and selects an appropriate one. The default preference is
CloneStorableClone::PP
This list might evolve in future. Please see "EXPORTS" how to pick a particular one.
Exports
"Clone::Choose" exports clone() by default.
One can explicitly import "clone" by using
use Clone::Choose qw(clone);
or pick a particular "clone" implementation
use Clone::Choose qw(:Storable clone);
The exported implementation is resolved dynamically, which means that any using module can either rely on the default backend preference or choose a particular one.
It is also possible to select a particular "clone" backend by setting the environment variable CLONE_CHOOSE_PREFERRED_BACKEND to your preferred backend.
This also means, an already chosen import can't be modified like
use Clone::Choose qw(clone :Storable);
When one seriously needs different clone implementations, our recommended way to use them would be:
use Clone::Choose (); # do not importmy ($xs_clone, $st_clone);{ local @Clone::Choose::BACKENDS = (Clone => "clone"); $xs_clone = Clone::Choose->can("clone"); }{ local @Clone::Choose::BACKENDS = (Storable => "dclone"); $st_clone = Clone::Choose->can("clone"); }
Don't misinterpret recommended - modifying @Clone::Choose::BACKENDS has a lot of pitfalls and is unreliable beside such small examples. Do not hesitate open a request with an appropriate proposal for choosing implementations dynamically.
The use of @Clone::Choose::BACKENDS is discouraged and will be deprecated as soon as anyone provides a better idea.
Package methods
backend
"backend" tells the caller about the dynamic chosen backend:
use Clone::Choose;say Clone::Choose->backend; # Clone
This method currently exists for debug purposes only.
get_backends
"get_backends" returns a list of the currently supported backends.
Support
You can find documentation for this module with the perldoc command.
perldoc Clone::Choose
You can also look for information at:
- •
-
RT: CPAN's request tracker
<http://rt.cpan.org/NoAuth/Bugs.html?Dist=Clone-Choose>
- •
-
AnnoCPAN: Annotated CPAN documentation
<http://annocpan.org/dist/Clone-Choose>
- •
-
CPAN Ratings
<http://cpanratings.perl.org/d/Clone-Choose>
- •
-
Search CPAN
<http://search.cpan.org/dist/Clone-Choose/>
License and copyright
Copyright 2017 Jens RehsackCopyright 2017 Stefan Hermes
This program is free software; you can redistribute it and/or modify it under the terms of either: the GNU General Public License as published by the Free Software Foundation; or the Artistic License.
See http://dev.perl.org/licenses/ for more information.
Releases
5 releases since Debian 10 (Buster); the text changed 2 times.