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"

