Class::MakeMethods::Template::Ref - Universal copy and compare methods package MyObject; use Class::MakeMethods::Template::Ref ( 'Hash:new' => [ 'new' ], clone => [ 'clone' ] ); package main; my $obj = MyObject->new( foo => ["Foozle", "Bozzle"] ); my $clone = $obj->clone(); print $obj->{'foo'}[1]; The following types of methods are provided via the Class::MakeMethods interface:

clone
Produce a deep copy of an instance of almost any underlying datatype. Parameters: init_method If defined, this method is called on the new object with any arguments passed in.

prototype
Create new instances by making a deep copy of a static prototypical instance. Parameters: init_method If defined, this method is called on the new object with any arguments passed in.

compare
Compare one object to another. Templates default Three-way (sorting-style) comparison. equals Are these two objects equivalent? identity Are these two references to the exact same object? See Class::MakeMethods for general information about this distribution. See Class::MakeMethods::Template for more about this family of subclasses. See Class::MakeMethods::Utility::Ref for the clone and compare functions used above.