Robert 'phaylon' Sedlacek > Phaylon-Class-Cloner-0.01 > Phaylon::Class::Cloner

Download:
Phaylon-Class-Cloner-0.01.tar.gz

Dependencies

Annotate this POD

CPAN RT

Open  0
Report a bug
Module Version: 0.01   Source  

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