Так же, как взломать сайт с орбиты, [0-9]
- единственный способ быть уверенным. Да, это ужасно Да, выбор сделать \d
ЮНИКОДОМ и с учетом местных особенностей был глупым. Но это наша кровать, и мы должны лежать в ней.
Что касается людей, которые склоняют головы в песке и говорят, что это не влияет на набор символов, который они используют сегодня, то, возможно, вы используете этот набор символов сегодня, но остальной мир использует UTF-8 сейчас Вы будете использовать его в ближайшее время. Не забывайте кодировать, как парень, который поддерживает ваш код, - маньяк-убийца, который знает, где вы живете.
О, а что касается модулей Perl, использующих \d
против [0-9]
, даже ядро все еще имеет проблемы с UNICODE .
Если вы на самом деле имеете в виду любую цифру, но хотите иметь возможность вычислять результаты, вы можете использовать Text::Unidecode
:
#!/usr/bin/perl
use strict;
use warnings;
use Text::Unidecode;
my $number = "\x{1811}\x{1812}\x{1813}\x{1814}\x{1815}";
print "$number is ", unidecode($number), "\n";
После еще одного тестирования это выглядит так: Text :: Unidecode не обрабатывает все цифровые символы правильно. Я пишу модуль , который будет работать.