#Party.pm { package Party; use Moose; has 'table' => ( is => 'rw', isa => 'ArrayRef[Table]' ); } { package Table; use Moose; has 'size' => ( is => 'rw', isa => 'Str' ); has 'color' => ( is => 'rw', isa => 'Str' ); } -------- #goToParty.pl use Party.pm #BIG RED TABLE my $table1 = Table->new(size => 'big', color => 'red'); my $party = Party->new( tables => [ $table1] ); #SMALL BLUE TABLE my $table2 = Table->new(size => 'small', color => 'blue');