---
name: "Class::MakeMethods::Template::Ref"
section: "3pm"
platform: "linux"
package: "libclass-makemethods-perl"
version: "1.01-7"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/Class::MakeMethods::Template::Ref"
---

# Class::MakeMethods::Template::Ref(3pm)

Universal copy and compare methods

## NAME

Class::MakeMethods::Template::Ref - Universal copy and compare methods

## SYNOPSIS

```
  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];
```

## DESCRIPTION

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 ALSO

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.
