🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.lang.perl
Article #92

Re: Sortowanie po polsku

#92
From: Piotr Piatkowski
Date: Wed, 26 Feb 1997 22:21
54 lines
3099 bytes
Emil Stepniewski <emil@oeiizk.waw.pl> wrote:
: Czy jest jakies dobry, sprawdzony, najszybszy i w ogole jedynie sluszny
: sposob sortowania plikow z polskimi literkami przy pomocy perla?

Wersja 5.004 (która ciągle się *oficjalnie* nie ukazała) jest już 
"lokalizowalna" - tzn. można napisać use local żeby perl używał 
ustawień z locale. Np. tak:

#!/usr/bin/perl
use locale;
@words = qw(lupa łąka laka lądowanie ćma cytryna łóżko zupa żaba);
print join ", ", sort @words;

Jeżeli teraz mamy zainstalowane locale do języka polskiego i 
odpowiednio ustawione zmienne środowiskowe, to to działa tak:

kompas@zombie3$ echo $LANG
pl_PL
kompas@zombie3$ ./perlloc  
ćma, cytryna, lądowanie, laka, łąka, łóżko, lupa, żaba, zupa

Przy okazji wychodzi nowy problem, w Polsce mamy dwa standardy... 
nie, nie kodowania liter, to już wszyscy wiedzą - mamy też dwa 
standardy sortowania! :-)  Ten który widać tu powyżej, to standard 
stosowany w bibliotekach - przyjmuje się tam że litery "ogonkowe" są 
rownoważne im odpowiednikom łacińskim, czyli np. w powyższych 
przykładach słowo "laka" jest za słowem "lądowanie" bo ma trzecią 
literkę k - drugie litery są traktowane jako identyczne. Podobnie 
"żaba" i "zupa" - liczy się druga litera.

Ale sposób sortowania zależy tutaj już nie od perla, tylko od 
ustawień systemowych (w tym wypadku jest to AIX 4.2).
Myślę że korzysanie z locale jest rozwiązeniem najlepszym, bo mamy 
problem rozwiązany generalnie, a do tego działają wszystkie funkcje, 
np:

$ perl -Mlocale -e 'print uc "łóżko\n"'      
ŁÓŻKO

Działają też oczywiście poprawnie takie rzeczy jak \w i \b w 
wyrażeniach regularnych.

Werjsa beta perla 5.004 dostępna jest w archiwach CPAN, np. w:

ftp://ftp.pk.edu.pl/pub/lang/perl/CPAN/src/5.0/unsupported/

(wbrew temu że nazywa się - najnowsza - 5.003_90 - jest to już 5.004, 
tylko że pre-release)

Swoją drogą to teraz nowa wersja pojawia się średnio raz na tydzień,
5.003_90 pojawiła się ...wczoraj :-)  (jeszcze jej nie widziałem)

-- 
Piotr Piątkowski, Uczelniane Centrum Informatyki, AGH Krakow, POLAND
Technical Details
Message-ID: <5f2d0j$e1e@galaxy.uci.agh.edu.pl>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!pingwin.icm.edu.pl!news.icm.edu.pl!news.radio.cz!voskovec.radio.cz!newsbastard.radio.cz!news.radio.cz!newsbreeder.radio.cz!news.radio.cz!CESspool!nntp.uio.no!news.maxwell.syr.edu!cpk-news-hub1.bbnplanet.com!news.bbnplanet.com!rill.news.pipex.net!pipex!uunet!in2.uu.net!192.147.147.1!wariat.org!uw.edu.pl!cyfronet!galaxy.uci.agh.edu.pl!galaxy.uci.agh.edu.pl!news
References: <33149750.346E2C30@oeiizk.waw.pl>

Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!pingwin.icm.edu.pl!news.icm.edu.pl!news.radio.cz!voskovec.radio.cz!newsbastard.radio.cz!news.radio.cz!newsbreeder.radio.cz!news.radio.cz!CESspool!nntp.uio.no!news.maxwell.syr.edu!cpk-news-hub1.bbnplanet.com!news.bbnplanet.com!rill.news.pipex.net!pipex!uunet!in2.uu.net!192.147.147.1!wariat.org!uw.edu.pl!cyfronet!galaxy.uci.agh.edu.pl!galaxy.uci.agh.edu.pl!news
From: kompas@galaxy.uci.agh.edu.pl (Piotr Piatkowski)
Newsgroups: pl.comp.lang.perl
Subject: Re: Sortowanie po polsku
Date: 26 Feb 1997 23:21:07 +0100
Organization: University of Mining & Metallurgy
Lines: 54
Message-ID: <5f2d0j$e1e@galaxy.uci.agh.edu.pl>
References: <33149750.346E2C30@oeiizk.waw.pl>
NNTP-Posting-Host: galaxy.uci.agh.edu.pl
Mime-Version: 1.0
X-Newsreader: TIN [UNIX 1.3 unoff BETA release 960713]
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit