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
SEE ALSO
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