my $valid_chars = 'CETLMNPA'; if ($CD =~ m/^[$valid_chars](?:,[$valid_chars])*$/) { print "Valid!" } else { die "Invalid!" } #### m/ ^[$valid_chars] #the string must start with one of the valid chars (?: #start group, but don't capture! , #could have a comma [$valid_chars] #and another valid char )* #and that comma+valid char could repeat 0 or more times $ #until the end of the string /x #this is here to allow me to use all these comments #### my %config = map { $_ => 1 } split(',', $CD); ## later on... if ( $config{L} ) { print "L was set!" }