c:\@Work\Perl\monks>perl -wMstrict -le "use 5.010; ;; my $data = '1|2|3|4|5|6|7|8|9|a|b|c|d|e|f|g|h|i'; print qq{'$data'}; ;; local our $n; $data =~ s{ \| (?(?{ ++$n < 10 || $n > 12 }) (*FAIL)) }{ pipe }xmsg; print qq{'$data'}; " '1|2|3|4|5|6|7|8|9|a|b|c|d|e|f|g|h|i' '1|2|3|4|5|6|7|8|9|a pipe b pipe c pipe d|e|f|g|h|i' #### c:\@Work\Perl\monks>perl -wMstrict -le "my $data = '1|2|3|4|5|6|7|8|9|a|b|c|d|e|f|g|h|i'; print qq{'$data'}; ;; use constant O => 10; use constant T => 3; ;; my $p = $data =~ tr/|//; my $n = $p - O - T + 1; my $m = $n + T - 1; $data =~ s{ [|] (?= (?: [^|]* [|]){$n,$m} [^|]* \z) }{ pipe }xmsg; print qq{'$data'}; " '1|2|3|4|5|6|7|8|9|a|b|c|d|e|f|g|h|i' '1|2|3|4|5|6|7|8|9|a pipe b pipe c pipe d|e|f|g|h|i'