LINUX.ORG.RU

История изменений

Исправление orm-i-auga, (текущая версия) :

Ладно, упростим пример, вот аналогичный исходному:

$ echo "abcd" | perl -pe "s/d*$/e/g"
abcee
Получается, при первом проходе он нашёл символ d в конце строки, повторяющийся один раз, и сделал замену. Пошёл второй проход, он нашёл символ d в конце строки, повторяющийся ноль раз и сделал замену. Но почему тогда он остановился на этом последнем разе, что мешает сделать третий проход, затем четвертый, и т.д., и каждый раз добавлять в конец e?

UPD Кажется понял. Если при каждом проходе запоминать, что именно было заменено в какой позиции, то в замененном тексте нельзя делать повторные замены. Вот и условие останова.

Исходная версия orm-i-auga, :

Ладно, упростим пример, вот аналогичный исходному:

$ echo "abcd" | perl -pe "s/d*$/e/g"
abcee
Получается, при первом проходе он нашёл символ d в конце строки, повторяющийся один раз, и сделал замену. Пошёл второй проход, он нашёл символ d в конце строки, повторяющийся ноль раз и сделал замену. Но почему тогда он остановился на этом последнем разе, что мешает сделать третий проход, затем четвертый, и т.д., и каждый раз добавлять в конец e?