HTML::Entities::encode_entities_numeric: преобразовать шестнадцатеричный вывод в десятичный
Я использую модуль HTML:: Entities для кодирования некоторых специальных символов. Вот мой пример кода:
use HTML::Entities qw(encode_entities_numeric);
my $str = "some special chars like € ™ © ®";
encode_entities_numeric($str);
print $str;
Output: € ™ © ®
В качестве вывода в HTML используется числовой шестнадцатеричный код символа.
Я хочу, чтобы вывод в виде HTML числового десятичного значения символов, таких как € ™ © ®
Есть ли способ сделать это в encode_entities_numeric()
Спасибо!
2 ответа
HTML::Entities выполняет преобразование в небольшой подпрограмме с именемnum_entry
. Переопределите это как хотите:
use utf8;
use HTML::Entities qw(encode_entities_numeric);
{
no warnings 'redefine';
sub HTML::Entities::num_entity { sprintf "&#%d;", ord($_[0]); }
}
my $str = "some special chars like € ™ © ®";
encode_entities_numeric($str);
print $str;
Как бы там ни было, Perl хочет, чтобы вы делали именно это. Он разработан таким образом, чтобы вы могли изменять вещи таким образом. Было бы лучше, если бы HTML::Entities разрешал использование производных классов, но это не так. Perl, понимая, что мир такой беспорядочный, предлагает вам способы приспособить его к тому, что вам нужно.
Нет, это не настраивается (потому что €
а также €
100% эквивалентны).