s{(|\G)(.+?)\|(.+?)\|(.*?)(?=)} {$1$2$3$4}sg; #### Pass 1: (test)(431)| Pass 2: (alpha)|(123)| Pass 3: (bravo)|(542)| Pass 4: (charlie)|(412) #### Pass 1: (431)|(alpha|123|bravo|542|charlie|412) #### s{(?:(.*?)|\G([^|]*?)\|)([^|]*?)(?:\||)}{ "" . (defined($1)?$1:$2) . "$3" }seg; #### s{(.*?)(.*?)}{ my $s = "|$1|$2"; $s =~ s{\|([^|]*)\|([^|]*)}{$1$2}sg; $s }seg;