# info > Moose::Meta::Attribute::Native::Trait::Counter

## [Moose::Meta::AttributeUsertMoose::Meta::Attribute::Native::Trait](https://www.chedong.com/phpMan.php/perldoc/Moose%3A%3AMeta%3A%3AAttributeUsertMoose%3A%3AMeta%3A%3AAttribute%3A%3ANative%3A%3ATrait/markdown)::[Counter(3pm)](https://www.chedong.com/phpMan.php/man/Counter/3pm/markdown)

## 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
       o   set($value)

           Sets the counter to the specified value and returns the new value.

           This method requires a single argument.

       o   inc

       o   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.

       o   dec

       o   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.

       o   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
       o   Stevan Little <<stevan@cpan.org>>

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

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

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

       o    ' (Yuval Kogman) <<nothingmuch@woobling.org>>

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

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

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

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

       o   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.

perl v5.34.0               [Moose::Meta::Attribute::Native::Trait](https://www.chedong.com/phpMan.php/perldoc/Moose%3A%3AMeta%3A%3AAttribute%3A%3ANative%3A%3ATrait/markdown)::[Counter(3pm)](https://www.chedong.com/phpMan.php/man/Counter/3pm/markdown)
