Perl:如何在XML文件中用相应的实体替换扩展字符?

时间:2011-05-19 08:49:18

标签: perl

在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 个答案:

答案 0 :(得分:6)

$str =~ s/([\x7f-\x{ffffff}])/as_entity($1)/ge;

应该足够了。 (注意额外的/e修饰符。)