---
name: "Catmandu::Addable"
section: "3pm"
platform: "linux"
package: "libcatmandu-perl"
version: "1.2024-1"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/Catmandu::Addable"
---

# Catmandu::Addable(3pm)

Base class for all Catmandu modules need to implement add

## NAME

Catmandu::Addable - Base class for all Catmandu modules need to implement add

## SYNOPSIS

```
    package My::Adder;
    use Moo;
    use Data::Dumper;

    with 'Catmandu::Addable';
    sub add {
        my ($self,$object) = @_;
        print "So you want to add:\n";
        print Dumper($object);
        1;
    }
    sub commit {
        my $self = shift;
        print "And now you are done?\n";
    }
    package main;
    my $adder = My::Adder->new(fix => ['upcase(foo)']);
    # prints foo => BAR
    $adder->add({ foo => 'bar' });

    # prints:
    #  foo => BAR
    #  foo => BAR
    $adder->add_many([ { foo => 'bar' } , { foo => 'bar' }]);
    # prints a commit statement
    $adder->commit;
```

## OPTIONS

- autocommit

  Autocommit when the exporter gets out of scope. Default 0.

## METHODS

### add($hash)

Receives a Perl hash and should return true or false.

### commit

This method is usually called at the end of many add or add\_many operations.

## INHERIT

If you provide an 'add' method, then automatically your package gets a add\_many method, plus a fix attribute which transforms all Perl hashes provided to the add method.

## SEE ALSO

Catmandu::Fixable, Catmandu::Exporter , Catmandu::Store
