Это не бесполезно.
Учтите это:
class FooException extends Exception with ControlThrowable
Это будет поймано первым блоком и переброшено, так и не достигнув второго блока. Возможно, это плохая идея - писать подобные исключения, но, когда впервые был представлен ControlThrowable (затем он назывался ControlException), это было нередко в стандартной библиотеке .
Смотрите на HTML:: Объекты :
use HTML::Entities;
my $html = "Snoopy & Charlie Brown";
print decode_entities($html), "\n";
можно предположить вывод.
Вышеупомянутые ответы говорят Вам, как декодировать объекты в строки Perl, но Вы также спросили, как изменить тех, которые в ASCII.
Предположение, что это действительно, что Вы хотите и Вы не хотите всех unicode символов, на которые можно посмотреть текст:: модуль Unidecode от CPAN для Уничтожения всех тех нечетных символов назад в примерно подобный набор символов ASCII:
use Text::Unidecode qw(unidecode);
use HTML::Entities qw(decode_entities);
my $source = '北亰';
print unidecode(decode_entities($source));
# That prints: Bei Jing
Обратите внимание, что существуют указанные шестнадцатеричными числами символы также. Они похожи на это: & #xe9; (é).
Использование HTML:: decode_entities Объектов для перевода объектов в фактические символы. Преобразовать это в ASCII требует большего количества работы. Я использовал iconv (интерфейс жемчуга: текст:: Iconv) с транслитерировать опцией на с некоторым успехом в прошлом. Но если Вы имеете дело с ограниченным набором объектов, или Вам на самом деле не нужен в уменьшенный до эквивалентов ASCII, можно быть более обеспеченным ограничением, что decode_entities производит или предоставление ему с пользовательскими картами преобразования. Посмотрите HTML:: документ Объектов.
Существует несколько предопределенных сущностей HTML - &
"
>
и т. Д., Которые вы могли бы жестко кодировать.
Однако, больший случай числовых объектов - {
- будет намного сложнее, так как эти значения Unicode , а преобразование в ASCII будет варьироваться от сложным ] до невозможно .