Moose::Meta::Attribute::Native::Trait::Counter(3) User Contributed Perl Documentation Moose::Meta::Attribute::Native::Trait::Counter(3)

# [SYNOPSIS](#SYNOPSIS)

```
  package MyHomePage;
  use Moose;
  has 'counter' => (
      traits  => ['Counter'],
      is      => 'ro',
      isa     => 'Num',
      default => 0,
      handles => {
          inc_counter   => 'inc',
          dec_counter   => 'dec',
          reset_counter => 'reset',
      },
  );
  my $page = MyHomePage->new();
  $page->inc_counter;    # same as $page->counter( $page->counter + 1 );
  $page->dec_counter;    # same as $page->counter( $page->counter - 1 );
  my $count_by_twos = 2;
  $page->inc_counter($count_by_twos);
```

# [DESCRIPTION](#DESCRIPTION)

This trait provides native delegation methods for counters. A counter can be any sort of number (integer or not). The delegation methods allow you to increment, decrement, or reset the value.

# [DEFAULT TYPE](#DEFAULT_TYPE)

If you don't provide an "isa" value for your attribute, it will default to "Num".

# [PROVIDED METHODS](#PROVIDED_METHODS)

- **set($value)**
  
  Sets the counter to the specified value and returns the new value.
  
  This method requires a single argument.
- **inc**
- **inc($arg)**
  
  Increases the attribute value by the amount of the argument, or by 1 if no argument is given. This method returns the new value.
  
  This method accepts a single argument.
- **dec**
- **dec($arg)**
  
  Decreases the attribute value by the amount of the argument, or by 1 if no argument is given. This method returns the new value.
  
  This method accepts a single argument.
- **reset**
  
  Resets the value stored in this slot to its default value, and returns the new value.

# [BUGS](#BUGS)

See "BUGS" in Moose for details on reporting bugs.

2026-08-29 perl v5.44.0

---

Document: Moose::Meta::Attribute::Native::Trait::Counter(3pm) from perl-moose 2.4000-r4 (Chainguard OS)
Source: https://github.com/moose/Moose
