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% эквивалентны).

Другие вопросы по тегам