Я просто пропущу часть о том, что регулярные выражения являются плохим способом анализа HTML, потому что иногда быстрое и грязное решение достаточно хорошо.
Вы не можете использовать оператор внутри строкикак это.++ просто обрабатывается как простой текст (как вы нашли).Вы должны использовать флаг /e
, чтобы указать, что замена должна быть оценена как код Perl, а затем использовать соответствующее выражение, например:
$content =~ s/SIZE="(\d+)">/'SIZE="' . ($1 + 1) . '">'/eg;
Вы не можете использовать $1++
по двум причинам.,Во-первых, он будет делать приращение после возврата значения, поэтому вы замените 8 на 8 вместо 9. Во-вторых, $1
- это значение только для чтения, и приращение захочет изменитьэто.