Perl -- use locale


To czdebian-l zavinac debian bod cz
From Marek Nožka <tlapicka zavinac centrum bod cz>
Date Fri, 27 Jun 2008 09:35:55 +0200

Ahoj. 

Mám takový malý problémek s použitím locale v Perlu. Locale mám
vygenerované dobře:

$ locale
LANG=cs_CZ.UTF-8
LANGUAGE=cs_CZ:cs:en_GB:en
LC_CTYPE="cs_CZ.UTF-8"
LC_NUMERIC="cs_CZ.UTF-8"
LC_TIME="cs_CZ.UTF-8"
LC_COLLATE="cs_CZ.UTF-8"
LC_MONETARY="cs_CZ.UTF-8"
LC_MESSAGES="cs_CZ.UTF-8"
LC_PAPER="cs_CZ.UTF-8"
LC_NAME="cs_CZ.UTF-8"
LC_ADDRESS="cs_CZ.UTF-8"
LC_TELEPHONE="cs_CZ.UTF-8"
LC_MEASUREMENT="cs_CZ.UTF-8"
LC_IDENTIFICATION="cs_CZ.UTF-8"
LC_ALL=

Podle toho, co jsem našel, stačí, když mám nastavené dobře locale a v
Perlu si jen připojím pragmatický modul locale. Sort funguje:

#!/usr/bin/perl -w 

use locale;

@pole=qw(šiška marek ucho čaj žička);
@pole=sort(@pole);

foreach $a (@pole) {
        print "$a \n";
}

Ale pokud přidám něco jako:

    $a =~ s/\W//g;

nebo:

print "\Uěščřžabcd\E";

tak to nechodí a znaky s diakritikou se nechovají jako alfanumerické
znaky. Pokud explicitně nastavím proměnnou prostředí přímo v Perlu:

setlocale LC_CTYPE 'cs_CZ.UTF-8';

je výsledek stále stejný:

aj
marek
ika
ucho
ika
ěščřžABCD

Díky 

-- 
 @ @ @     Marek Nožka
 '****.@
 :*****`@  email:  tlapicka zabalenéAčko centrum.cz
 `*****'   jabber: karkulin zabalenéAčko njs.netlab.cz
  :****:
  `****'
  `****'   Powered by Debian GNU/Linux
  `.**'
    ¨¨

No virus found in this incoming message.
Checked by AVG.
Version: 7.5.51 / Virus Database: 269.20.9/1291 - Release Date: 02/21/08

Partial thread listing: