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->somecloning_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
clonedefault
Preset default cloning. Uses Storage's "dclone"

cloneplain_scalar
Cloning for non-reference scalars. Defaults to return the value.

cloneHASH
Default for hash references. Clones first level with redispatching values to "clone".

cloneARRAY
Same as "cloneHASH" 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"