В одну сторону, для вопроса, который задают
$string =~ s/{{\K(\w)/uc($1)/ge;
, в результате чего /e
заставляет его оценить сторону замены как код.\K
позволяет отбрасывать все предыдущие совпадения, поэтому {{
не «расходуется» (и, следовательно, не нуждается в повторном наборе на стороне замены).
Если вы хотите учесть возможные пробелы: $string =~ s/{{\s*\K(\w)/uc($1)/ge;
, и, насколько я знаю, bibtex, почему бы не учесть и пробелы между фигурными скобками, поэтому {\s*{
.
Если простая капитализациявсе, что вам нужно, то \U$1
на стороне замены достаточно, и нет необходимости в модификаторе /e
с ним, согласно комментарию Grinnz .\U
является обобщенным оператором, подобным кавычкам , который, таким образом, также может использоваться в регулярных выражениях;см. в разделе Escape-последовательности в perlre и в perlretut .
Рекомендую прочитать в учебнике perlretut ,Это будет иметь большое значение.
Однако я должен также спросить: Вы уверены , что вы действительно можете просто раскрыть это в своем файле?Будет ли он ловить все дела, которые вам нужны?Разве это не обрезает что-то еще, что ты не хотел?