$_="17341234"; 1 while s/(.)(...)\1/A$2B/; print "$_\n" #### $_="17341234"; $r = 0; 1 while substr($_,$r) =~ s/(.)(...)\1(?{local $r = pos() - 3})/A$2B/; print "$_\n"