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: