[sisyphus] Re: Сортировка кириллицы вPerl

Епифанов Сергей =?iso-8859-1?q?serpiph_=CE=C1_entek=2Eru?=
Пн Июн 16 17:58:27 MSD 2003


В сообщении от 16 Июнь 2003 17:38 Alexey Tourbin написал:
> On Mon, Jun 16, 2003 at 04:26:48PM +0400, Епифанов Сергей 
wrote:
> > > #se locale;
> > > use encoding 'utf-8';
> >
> > меняю cp1251 на utf-8 - вместо 'п(1087) р(1088) с(1089)
> > т(1090)' вижу '(0) (0) (0) (0)'
>
> Так исходно файл должен быть в utf8!
> Я проверял так:
>
> $ cat utf-test.pl
> use strict;
> use POSIX;
> #se locale;
> use encoding 'utf-8';
>
> my @l1 = ("п", "р", "с", "т");
> my @l2 = qw(п р с т);
> print "$_(", ord, ") " foreach sort(@l1); print "\n";
> print "$_(", ord, ") " foreach sort(@l2); print "\n";
>
> print("аБвгд" =~ m/б/i? "1": "0", "\n");
> print("абвгд" =~ m/б/i? "1": "0", "\n");
> print(lc("аБвгд") =~ m/б/? "1":"0", "\n");
>
> $ iconv -t utf-8 utf-test.pl | perl | iconv -f utf-8
> п(1087) р(1088) с(1089) т(1090)
> п(1087) р(1088) с(1089) т(1090)
> 1
> 1
> 1
> $

Интересно, я еще раз попробовал вместо utf-8 использовать cp1251. 
Интересно, что если программа такая:
use strict;
use POSIX;
use locale;
use encoding 'cp1251';

my @l1 = ("п", "р", "с", "т");
my @l2 = qw(п р с т);
print "$_(", ord, ") " foreach sort(@l1); print "\n";
print "$_(", ord, ") " foreach sort(@l2); print "\n";

print("аБвгд" =~ m/б/i? "1": "0", "\n");
print("абвгд" =~ m/б/i? "1": "0", "\n");
print(lc("аБвгд") =~ m/б/? "1":"0", "\n");

То она пишет:

п(1087) т(1090) с(1089) р(1088)
п(1087) р(1088) с(1089) т(1090)
0
0
1

А если из программы убрать

use locale;

то она выводит:

п(1087) р(1088) с(1089) т(1090)
п(1087) р(1088) с(1089) т(1090)
1
1
1

То бишь команда 'use locale' рушит всю работу!!!

-- 
С уважением, Епифанов Сергей
----------- следующая часть -----------
Было удалено вложение не в текстовом формате...
Имя     : =?iso-8859-1?q?=CF=D4=D3=D5=D4=D3=D4=D7=D5=C5=D4?=
Тип     : application/pgp-signature
Размер  : 189 байтов
Описание: signature
Url     : <http://lists.altlinux.org/pipermail/sisyphus/attachments/20030616/195ac92e/attachment-0010.bin>


Подробная информация о списке рассылки Sisyphus