package Person; use Moose; use Moose::Util::TypeConstraints; subtype 'Gender' => as 'Str' => where { /^(female|male)$/ }; has sex => ( is => 'rw', isa => 'Gender' ); package Person; use Moose; use Moose::Util::TypeConstraints; enum Gender => qw(female male); has sex => ( is => 'rw', isa => 'Gender' );