GSP
Quick Navigator

Search Site

Unix VPS
A - Starter
B - Basic
C - Preferred
D - Commercial
MPS - Dedicated
Previous VPSs
* Sign Up! *

Support
Contact Us
Online Help
Handbooks
Domain Status
Man Pages

FAQ
Virtual Servers
Pricing
Billing
Technical

Network
Facilities
Connectivity
Topology Map

Miscellaneous
Server Agreement
Year 2038
Credits
 

USA Flag

 

 

Man Pages
Clone::Choose(3) User Contributed Perl Documentation Clone::Choose(3)

Clone::Choose - Choose appropriate clone utility

  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);

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

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

"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" returns a list of the currently supported backends.

  Jens Rehsack <rehsack at cpan dot org>
  Stefan Hermes <hermes at cpan dot org>

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.

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

  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.

Clone, Clone::PP, Storable
2018-04-09 perl v5.32.1

Search for    or go to Top of page |  Section 3 |  Main Index

Powered by GSP Visit the GSP FreeBSD Man Page Interface.
Output converted with ManDoc.