# under the terms of the GPL version 2, or any later version. See the
# file README and COPYING for more information. Copyright 2003 by Don
# Armstrong <don@donarmstrong.com>.
-# $Id: Modular.pm,v 1.8 2003/12/09 02:00:10 don Exp $
+# $Id$
package Class::Modular;
=head1 SYNOPSIS
-package Foo::Bar;
+ package Foo::Bar;
-@ISA = qw(Class::Modular);
+ use base qw(Class::Modular);
=head1 DESCRIPTION
without modifying the base classes. This allows for code to be more
modular, and reduces code duplication.
-=over
-
-=item new
-
-new is responsible for blessing and creating a new database superclass.
-
-=item load
-
-load is responsible for loading database plugins
-
-=back
-
-
=head1 FUNCTIONS
=cut
use strict;
-use vars qw($VERSION $DEBUG);
+use vars qw($VERSION $DEBUG $REVISION);
use Carp;
-use Data::Copy qw(deep_copy); # Used for deep copying objects
+use Storable qw(dclone); # Used for deep copying objects
BEGIN{
- ($VERSION) = q$Revision: 1.8 $ =~ /\$Revision:\s+([^\s+])/;
+ $VERSION = '0.1';
+ ($REVISION) = q$LastChangedRevision$ =~ /\$LastChangedRevision:\s+([^\s+])/;
$DEBUG = 0 unless defined $DEBUG;
}
bless $clone, ref($self);
# copy data structures at this level
- $clone->{_methodhash} = deep_copy($self->{_methodhash});
- $clone->{_subclasses} = deep_copy($self->{_subclasses});
+ $clone->{_methodhash} = dclone($self->{_methodhash});
+ $clone->{_subclasses} = dclone($self->{_subclasses});
foreach my $subclass (keys %{$self->{_subclasses}}) {
# use eval to try and call the subclasses _clone method.