#!perl package IntStack; use Mouse; has storage => ( is => 'ro', isa => 'ArrayRef[Int]', default => sub{ [] }, traits => [qw(Array)], handles => { push => 'push', pop => 'pop', top => [ get => -1 ], }, ); __PACKAGE__->meta->make_immutable(); package main; my $stack = IntStack->new; $stack->push(42); $stack->push(27); print $stack->pop, "\n"; print $stack->top, "\n";