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"