在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;
}
Run Code Online (Sandbox Code Playgroud)
好像我不能(?{...})在替换部分使用...
实现这一目标的最佳方法是什么?
$str =~ s/([\x7f-\x{ffffff}])/as_entity($1)/ge;
Run Code Online (Sandbox Code Playgroud)
应该够了.(注意额外的/e修饰符.)