Perl: как заменить расширенные символы их соответствующими объектами в файле XML? - PullRequest
0 голосов
/ 19 мая 2011

В XML-файле мне нужно преобразовать все символы выше символьного кода 127 в соответствующие им буквальные сущности (обычно é в é).

Вот что я написал, но это не работает.

sub as_entity{
  my $char = shift;
  return sprintf("&#x%.4x;", ord($char));
}

sub entitify{
  my $str = shift;
  $str =~ s/([\x7f-\x{ffffff}])/(?{as_entity($1)})/g;
  return $str;
}

Кажется, я не могу использовать (?{...}) в запасной части ...

Каков наилучший способ достичь этого?

1 Ответ

6 голосов
/ 19 мая 2011
$str =~ s/([\x7f-\x{ffffff}])/as_entity($1)/ge;

должно быть достаточно. (Обратите внимание на дополнительный /e модификатор.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...