С вашего языка, вы Кажется, вы представляете себе, что ваша последовательность замещений работает вперед через строку, причем каждая замена занимает место, где последний остановился. Фактически, каждая подстановка будет применяться ко всей строке.
Когда вы говорите «положение последней замены», что должно произойти, если предыдущая замена ничего не обнаружила?
В скрипте вы можете просто сделать:
if (s/\s\+\d\d\d\d\]//) { $' =~ s/ /+/g }
но использование $»следует избегать многократного использования кода, так как это может повлиять на производительность других регулярных выражений. Там, вы должны были бы сделать
if (s/\s\+\d\d\d\d\]//) { substr($_, $+[0]) =~ s/ /+/g }
, но в любом случае, вы должны убедиться, что матч или замену вы ожидаете иметь множество $»или @ + на самом деле удалось.
Просьба привести пример ввода, в котором вы выполняете операции '' /// '. –
Это строка журнала веб-сервера, я не включил все замены в свой пример кода. 62.174.188.166 - - [01/Mar/2003: 00: 00: 00 +0100] "GET /puntos/img/ganar.gif HTTP/1.1" 200 1551 "http://www.universia.com/puntos /index.jsp "" Mozilla/4.0 (совместимо; MSIE 5.0; Windows 98; DigExt; Hotbar 2.0) " – Lucia