Главная страница


ru.perl

 
 - RU.PERL ----------------------------------------------------------------------
 From : Paul Kulchenko                       2:5020/400     15 Jun 2000  19:30:34
 To : All
 Subject : Re: cmp
 -------------------------------------------------------------------------------- 
 
 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.*. В твоем случае сделай Transform, еще и
 быстрее будет, если список большой:
 print join (" ",
   map {$_->[0]}
   sort {$a->[1] cmp $b->[1]}
   map {[$_, lc($_)]}
   @bred
 ), "\n";
 Так работает.
 
 Best wishes, Paul.
 --- ifmail v.2.15dev5
  * Origin: Rostelecom/Internet Centre (2:5020/400)
 
 

Вернуться к списку тем, сортированных по: возрастание даты  уменьшение даты  тема  автор 

 Тема:    Автор:    Дата:  
 Re: cmp   Paul Kulchenko   15 Jun 2000 19:30:34 
 Re: cmp   Andrey Sapozhnikov   16 Jun 2000 12:59:05 
Архивное /ru.perl/6552faecd124.html, оценка 2 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional