NAME
Phaylon::Class::Cloner - Experimental Customizable Cloning Device
SYNOPSIS
use Phaylon::Class::Cloner;
# that's what I needed
my $cloner = Phaylon::Class::Cloner->new ({
CODE => sub {
my ( $self, $coderef ) = @_;
return $coderef;
},
});
# cloning something
my $cloned = $cloner->clone( $structure );
DESCRIPTION
I had problems with cloning of structures that contain coderefs. I
didn't need to clone coderefs, just array and hash references. This
module enables one to define custom specific and default cloning
functionalities.
PUBLIC METHODS
new( *options hashref* )
Creates a new cloning object. Here's a quick example to show what can be
passed:
my $cloner = Phaylon::Class::Cloner->new ({
# if the module finds a coderef
CODE => sub { ... },
# module ran into an object
MyClass => sub {
my ( $self, $object ) = @_;
return $object->some_cloning_mechanism;
},
# what to do for non-refs. default is just to
# return the value
'' => sub { ... },
# if nothing's found for this type. preset to use
# Storage::dclone()
':default' => sub { ... },
});
clone( *data* )
Dispatcher for cloning functionality.
INTERNAL METHODS
_clone_default
Preset default cloning. Uses Storage's "dclone"
_clone_plain_scalar
Cloning for non-reference scalars. Defaults to return the value.
_clone_HASH
Default for hash references. Clones first level with redispatching
values to "clone".
_clone_ARRAY
Same as "_clone_HASH" just for arrays.
REQUIRES
Carp, Storable
SEE ALSO
Storable
NAMESPACE
Due to the specific and experimental nature of this module, it's trying
not to waste namespaces and therefore lies under "Phaylon::".
LICENSE
This module is free software. It may be used, redistributed and/or
modified under the same terms as Perl itself.
AUTHOR AND COPYRIGHT
Copyright (c) 2005: Robert Sedlacek "phaylon@dunkelheit.at"