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