Следующий кодПочему добавление общего суффикса отменяет порядок сортировки в локали en_US?
#!/usr/bin/perl
use strict;
use warnings;
my $s1 = '[email protected]';
my $s2 = '[email protected]';
my $s3 = 'aaa2000';
my $s4 = 'aaa_2000';
no locale;
print "\nNO Locale:\n\n";
if ($s1 gt $s2) {print "$s1 is > $s2\n";}
if ($s1 lt $s2) {print "$s1 is < $s2\n";}
if ($s1 eq $s2) {print "$s1 is = $s2\n";}
if ($s3 gt $s4) {print "$s3 is > $s4\n";}
if ($s3 lt $s4) {print "$s3 is < $s4\n";}
if ($s3 eq $s4) {print "$s3 is = $s4\n";}
use locale;
print "\nWith 'use locale;':\n\n";
if ($s1 gt $s2) {print "$s1 is > $s2\n";}
if ($s1 lt $s2) {print "$s1 is < $s2\n";}
if ($s1 eq $s2) {print "$s1 is = $s2\n";}
if ($s3 gt $s4) {print "$s3 is > $s4\n";}
if ($s3 lt $s4) {print "$s3 is < $s4\n";}
if ($s3 eq $s4) {print "$s3 is = $s4\n";}
распечатывает
NO Locale:
[email protected] is < [email protected]
aaa2000 is < aaa_2000
With 'use locale;':
[email protected] is > [email protected]
aaa2000 is < aaa_2000
, который я не могу следовать: в же время при использовании локали, есть < б И A @ Yahoo. com> [email protected]? !!
Я пропустил что-то более или менее очевидное или это ошибка? Могут ли другие подтвердить, что они видят такое же поведение?
Locale is $ locale
LANG=en_US.UTF-8
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=
Спасибо заранее.
Вы просто описываете алгоритм сортировки Unicode. Это не обычная вещь. Но я бы доверял UCA с моделями локалей или без них в миллион раз больше, чем когда-либо доверял локаторам поставщиков. Те, кто всегда меня терпят неудачи. Я очень сильно считаю/opine locales устаревшими бандажидами для целей ctype/collate, теперь у нас есть Unicode. – tchrist
Нет, я описываю реальность его системы, поскольку она применима к его проблеме. Я подозреваю, что большинство поставщиков в настоящее время внедряют свои локали на основе UCA; ведь UCA не изобретен из воздуха. Но я не вижу вашего мнения о том, почему локали терпят неудачу или их следует считать наследием. Конечно, вам нужны правила сортировки по языку, если существуют языки, которые отклоняются от порядка по умолчанию. Но это действительно к тому же вопрос. –