package Thing; use Data::Dumper; use Moose; has 'search' => ( is => 'rw', isa => 'HashRef', ); has '_data' => ( is => 'ro', isa => 'ArrayRef', traits => [ 'Array' ], default => sub { [] }, handles => { _add_data => 'push', _get_data => 'elements', }, ); sub data { my ($self, $stuff, @err) = @_; if( $stuff and ref( $stuff ) eq 'ARRAY' ) { my $values = [ values %{ $self->search } ]; foreach my $row ( @{ $stuff } ) { $self->_add_data( $row ) if( scalar( grep { $_ ~~ $values } values %{ $row } ) > 1 ); } } else { return $self->_get_data; } } 1;