Допустим, я хочу написать регулярное выражение для изменения всех тегов <abc>
, <def>
и <ghi>
на теги <xyz>
, а также я хочу изменить их закрывающие теги на </xyz>
. Это выглядит как разумное регулярное выражение (игнорируйте обратные пометки; у StackOverflow есть проблемы со знаками «меньше», если я их не включаю):
`s!<(/)?(abc|def|ghi)>!<${1}xyz>!g;`
И это тоже работает. Единственная проблема заключается в том, что для открытия тегов необязательной переменной $ 1 присваивается значение undef, и поэтому я получаю предупреждение «Использование неинициализированного значения ...».
Какой элегантный способ это исправить? Я бы предпочел не превращать это в два отдельных регулярных выражения, одно для открывающих тегов и другое для закрывающих тегов, потому что тогда нужно сохранить две копии списка тегов вместо одной.
Редактировать: Я знаю, что могу просто отключить предупреждения в этой области кода, но я не считаю это "элегантным".