MooseX::Clone::Meta::Attribute::Trait::StorableClone - The attribute trait for
deeply cloning attributes using Storable
# see MooseX::Clone
has foo => (
traits => [qw(StorableClone)],
isa => "Something",
my $clone = $object->clone; # $clone->foo will equal Storable::dclone($object->foo)
This meta attribute trait provides a "clone_value" method, in the
spirit of "get_value" and "set_value". This allows clone
methods such as the one in MooseX::Clone to make use of this per-attribute
Deriving this role for your own cloning purposes is encouraged.
This will allow your fine grained cloning semantics to interact with
MooseX::Clone in the RightX way.
- Whether or not Data::Visitor should be used to clone arbitrary structures.
Objects found in these structures will be cloned using clone_object_value.
If true then non object values will be copied over in shallow cloning
semantics (shared reference).
Defaults to false (all reference will be cloned).
- A hash ref used to construct "clone_visitor". Defaults to the
This can be used to alter the cloning behavior for non object values.
- The Data::Visitor::Callback object that will be used to clone.
It has an "object" handler that delegates to
"clone_object_value" and sets "tied_as_objects" to
true in order to deeply clone tied structures while retaining magic.
Only used if "clone_only_objects" is false and the value of the
attribute is not an object.
- clone_value $target, $proto, %args
- Clones the value the attribute encapsulates from $proto into $target.
- clone_value_data $value, %args
- Does the actual cloning of the value data by delegating to a
"clone" method on the object if any.
If the object does not support a "clone" method an error is
If the value is not an object then it will not be cloned.
In the future support for deep cloning of simple refs will be added
- clone_object_value $object, %args
- This is the actual workhorse of "clone_value_data".
- clone_any_value $value, %args
- Uses "clone_visitor" to clone all non object values.
Called from "clone_value_data" if the value is not an object and
"clone_only_objects" is false.
XXXX XXX'XX (Yuval Kogman) <email@example.com>
This software is copyright (c) 2008 by XXXX XXX'XX (Yuval Kogman).
This is free software; you can redistribute it and/or modify it under the same
terms as the Perl 5 programming language system itself.