#!/usr/bin/perl package Test::HashK; use Moose; use Moose::Util::TypeConstraints; our @_allowed_colors = qw(red green blue); enum 'colors', \@_allowed_colors; has scores => ( is => 'rw', isa => 'Test::HashK::Score', default => sub{Test::HashK::Score->new()} ); # I want the allowed *keys* to be colors package Test::HashK::Score; use Moose; for my $color (@Test::HashK::_allowed_colors) { has $color => is => 'rw', isa => 'Num', ; } 1;