# phpman > perldoc > Moose::Meta::Attribute::Native::Trait::Counter

## NAME
    [Moose::Meta::Attribute::Native::Trait::Counter](https://www.chedong.com/phpMan.php/perldoc/Moose%3A%3AMeta%3A%3AAttribute%3A%3ANative%3A%3ATrait%3A%3ACounter/markdown) - Helper trait for Int attributes which represent
    counters

## VERSION
    version 2.2200

## 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
    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
    If you don't provide an "isa" value for your attribute, it will default to "Num".

## 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
    See "BUGS" in Moose for details on reporting bugs.

## AUTHORS
    *   Stevan Little <<stevan@cpan.org>>

    *   Dave Rolsky <<autarch@urth.org>>

    *   Jesse Luehrs <<doy@cpan.org>>

    *   Shawn M Moore <<sartak@cpan.org>>

    *   יובל קוג'מן (Yuval Kogman) <<nothingmuch@woobling.org>>

    *   Karen Etheridge <<ether@cpan.org>>

    *   Florian Ragwitz <<rafl@debian.org>>

    *   Hans Dieter Pearcey <<hdp@cpan.org>>

    *   Chris Prather <<chris@prather.org>>

    *   Matt S Trout <<mstrout@cpan.org>>

## COPYRIGHT AND LICENSE
    This software is copyright (c) 2006 by Infinity Interactive, Inc.

    This is free software; you can redistribute it and/or modify it under the same terms as the Perl
    5 programming language system itself.

