'okoK'=~ /^(o|k)(k|i)(O|K)(K)/ #### 'okoK'=~ / ^ (?: (o|k) (?: (k|i) (?: (O|K) (?: (K) )? )? )? )? /x; my $n = length($&); # -or- use List::Util qw( first ); my $n = first { defined($-[$_]) } 1..4;