my @conf_enum_values = @{ Moose::Util::TypeConstraints::find_type_constraint('conf')->values }; #### use Types::Standard -types; my $Conf = Enum[qw/ access input /]; my $Version = Enum[1 .. 2]; my $FileName = StrMatch[qr/^(\w+)\.(\d+)\.txt$/, Tuple[$Conf, $Version]]; has filename => (is => 'rw', isa => $FileName);