Есть хороший трюк, который вы можете использовать с заменами, если вы не хотите заменять часть шаблона. \K
исключает из замены часть шаблона, которая предшествует ему:
perl -pi.bak -e "s/ojo\K/77/g" oven.txt
Я пишу об этом подробнее в Игнорировать часть совпадения подстановки
Кроме того, помните, как Perl определяет имя переменной. После сигилы вводятся все символы допустимого идентификатора. Поскольку 177
- допустимое имя переменной (даже если у вас не так много захватов), вы получите именно такое имя. Чтобы отделить имя переменной от остального текста, вы можете заключить имя переменной в фигурные скобки (сигил все еще снаружи):
"r$177" # variable named 177
"r${1}77" # variable 1