Файл, который я получаю, заполнен плохо отформатированными кодами UTF-8, такими как <0308>
и т. Д. Я могу правильно их идентифицировать, но я хочу заменить их на настоящую букву UTF-8, предпочтительно на регулярное выражение. Я пробовал десятки таких регулярных выражений:
s/<[0-9a-fA-F]{2,4}/\x{$1}/g
s/<[0-9a-fA-F]{2,4}/\N{U+$1}/g
И так далее, но каждый раз он говорит мне, что $
не является действительным шестнадцатеричным символом (с чем я полностью согласен). Разве это не должно просто взять число в моем $1
и вставить его туда? Или Perl действительно ожидает, что я буду использовать \x{..}
или \N{U+..}
только с фиксированными значениями? Если это так, я должен был бы написать вручную преобразование для каждого возможного шестнадцатеричного значения - не очень полезно.