|
|
ru.perl- RU.PERL ---------------------------------------------------------------------- From : Igor Nikolaev 2:5030/266 29 Jun 2000 05:34:47 To : Igor Tseglevsky Subject : Re: cmp -------------------------------------------------------------------------------- Igor Tseglevsky <tsypa@hq.pu.ru> wrote: > Я как бы верю, что это локализация, но уж очень странно > она не работает -- в зависимости от того, как функции параметры > подсунуть. Это типичный Шрёдинбуг, как только ты (гад! на линуксовку не пришёл...) о нём сказал, так он сразу начал где ни попадя попадаться, вот я его до абсурда довёл: % cat l.pl #!/usr/bin/perl -w use locale; @X = split //, 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'; $\ = "\n"; # $, =' '; print @X; print sort { lc $a cmp lc $b } @X; % LANG=ru_RU.KOI8-R % ./l.pl abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ lkjihgfedcbamyxwvutsrqponzLKJIHGFEDCBAMZYXWVUTSRQPON % LANG=C % ./l.pl abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ % Без use locale всё хорошо ;-) А вот с LANG=en_US.ISO_8859-1 такая же гадость. Задница оттого, что при включенной локали оператор cmp (не функция lc!!!) в этом контексте нифига не работает: #!/usr/bin/perl -w use locale; sub c { my $a = $_[0] cmp $_[1]; print "'$_[0]'$a'$_[1]'\n"; return $a; } my @X = split //, 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'; my @Y = sort { &c ( lc $a, lc $b ) } @X; Печатает что-то типа: [skip] 'b'-1'z' 'a'-1'z' 'z'-1'b' 'z'-1'c' ... Честно говоря у меня такое впечатление, что кто-то кому-то на очень низком уровне то-ли указатели попортил, то ли в стек немного нагадил... Когда вместо специальным образом обрабатываемого @_ ставишь честные параметры (например $_[0].'' то всё устаканивается). А может это gcc постарался. Короче upgrade и забудь. -- Игорь --- ifmail v.2.12.os.sensi * Origin: Как его тащит! Как колбасит! (2:5030/266@fidonet) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.perl/13416cf041f3a.html, оценка из 5, голосов 10
|