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);