The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
#!perl
use strict;
use Test::More;

my $triggered = 0;
{
    package MyHomePage;
    use Mouse;

    has 'counter' => (
        traits  => ['Counter'],
        is      => 'rw',
        isa     => 'Int',
        default => 0,
        handles => {
            inc_counter   => 'inc',
            dec_counter   => 'dec',
            reset_counter => 'reset',
        },
    );

    has 'counter_w_trigger' => (
        traits  => ['Counter'],
        is      => 'rw',
        isa     => 'Int',
        default => 0,
        handles => {
            inc_counter2   => 'inc',
            dec_counter2   => 'dec',
            reset_counter2 => 'reset',
        },
        trigger => sub {
            $triggered++;
        },
    );
    __PACKAGE__->meta->make_immutable();
}

my $o = MyHomePage->new();

$o->inc_counter for 1 .. 42;
is $o->counter, 42;

is $triggered, 0;
$o->inc_counter2 for 1 .. 42;
is $o->counter_w_trigger, 42;
is $triggered, 42;

done_testing;