|
ru.perl- RU.PERL ---------------------------------------------------------------------- From : Andrey Sapozhnikov 2:5020/400 16 Jun 2000 12:59:05 To : All Subject : Re: cmp --------------------------------------------------------------------------------
Paul Kulchenko wrote:
>
> Hi, Igor!
> Igor Tseglevsky wrote in message <8i8es4$ons$1@sensi.pu.ru>...
> >Кто может обьяснить, почему cmp не хочет сравнивать результаты работы
> >функции?
> >
> >% loc.pl
> >а б a в г д е я x ю к м л
> >a x а б в г д е к л м ю я
> >д г в a б а е л м к ю x я
> >a x а б в г д е к л м ю я
> >
> >% cat loc.pl
> >#!/usr/bin/perl -w
> >
> >use locale;
> >use POSIX 'locale_h';
> >setlocale(LC_ALL, 'ru_RU.KOI8-R');
> >
> >@bred = ('а', 'б', 'a', 'в', 'г', 'д', 'е', 'я', 'x', 'ю', 'к', 'м', 'л');
> >
> >print join (" ", @bred), "\n";
> >
> >print join (" ", sort { $a cmp $b } @bred), "\n";
> >print join (" ", sort { lc($a) cmp lc($b) } @bred), "\n";
> >print join (" ", sort { my $c = lc($a); my $d = lc($b); $c cmp $d } @bred),
> >"\n";
> >%
> Честно говоря сначала не поверил, пока сам не убедился. Hеправильно работает
> даже с английскими буквами, если указываешь use locale. Причем по
> отдельности lc, uc и пр. и cmp работают правильно. Вместе -- нет. Почему --
> не знаю. Попробую спросить в comp.*.
И что интересно.
lc($a) cmp lc($b) не работает, а lc($a).'' cmp lc($b).'' работает.
Просто поразительно...
Андрей
--- ifmail v.2.15dev5
* Origin: Chelindbank (2:5020/400)
Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.perl/9117a13b80e7.html, оценка из 5, голосов 10
|