dwww Home | Manual pages | Find package

Clone::Choose(3pm)    User Contributed Perl Documentation   Clone::Choose(3pm)

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
         use Clone::Choose qw(:Storable);

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

         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 import
         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

           <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 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.

SEE ALSO
       Clone, Clone::PP, Storable

perl v5.36.0                      2022-12-06                Clone::Choose(3pm)

Generated by dwww version 1.15 on Mon Jul 1 04:34:30 CEST 2024.