/(.)*/s #### 'abcd' =~ /(?:(.)(.))*/s #### 'abcd' =~ /(?:(.){2})*/s #### $1 eq 'a' $2 eq 'b' $3 eq 'c' $4 eq 'd' #### 'abcdx' =~ /(?:(.)(.))*(.)/s #### $_ = 'foo bar baz burk | gah'; my @words; /(?:(\w+)\s+(?{push @words => $1}))*/; # Not backtracking safe! See below. # Submatches are in @words now. #### my @words; 'foo bar baz baz burk | gah' =~ / (?{ local @_words }) (?: (\w+) \s+ (?{ local @_words = (@_words, $1) }) )+ (??{ quotemeta $_words[-1] }) (?{ @words = @_words }) /x;