NAME
Clone::Choose - Choose appropriate clone utility
SYNOPSIS
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 preference
DESCRIPTION
Clone::Choose
checks several different modules which provides a clone()
function and selects an appropriate one. The default preference is
Clone
Storable
Clone::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
or pick a particular clone
implementation
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
When one seriously needs different clone implementations, our recommended way to use them would be:
my
(
$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.
AUTHOR
Jens Rehsack <rehsack at cpan dot org>
Stefan Hermes <hermes at cpan dot org>
BUGS
Please report any bugs or feature requests to bug-Clone-Choose at rt.cpan.org
, or through the web interface at http://rt.cpan.org/NoAuth/ReportBug.html?Queue=Clone-Choose. I will be notified, and then you'll automatically be notified of progress on your bug as I make changes.
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
AnnoCPAN: Annotated CPAN documentation
CPAN Ratings
Search CPAN
LICENSE AND COPYRIGHT
Copyright 2017 Jens Rehsack
Copyright 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.