local $_ = 'aaaaabaaaaab'; 1 while / ( (?<=a) (a) (?=[ab]) ) (??{ print $^N; '(?=)' }) /gx; print("\n"); #### local $_ = 'aaaaabaaaaab'; 1 while / a (a) [ab] (??{ print $^N; '(?=)' }) /gx; print("\n");