České řazení UTF-8 řetězců
Pavel Smerk
xsmerk na fi.muni.cz
Neděle Září 10 16:24:55 CEST 2017
Ahoj vespolek,
pokud to tu ještě někdo čte, jak řešíte české řazení? Zjistil jsem, že se
use locale (kdy je vše nastaveno cs_CZ.UTF-8) bije s use utf8 a/nebo -CSAD:
perl -e 'use utf8;
use locale; $tst = "být byt"; die "No match\n" unless $tst =~ /(\w+)/; print $1, "\n"'
echo být byt | perl -CSAD -e '
use locale; $tst = <STDIN> ; die "No match\n" unless $tst =~ /(\w+)/; print $1, "\n"'
[podle http://www.perlmonks.org/bare/?node_id=893944] vypíše b v perlu 5.14
a starších a být v 5.22 (verze mezi tím nemám k dispozici). Plus mi přijde,
že se lidi tváří, že locale* věci jsou z pohledu unicode spíš obsolete a je
lépe se jim vyhnout, takže si nejsem jistý, nakolik se na funkčnost
spoléhat, navíc ne všude můžu mít dostatečně novou verzi perlu.
Tedy, řešili jste toto někdo? Pokud ano, jak?
Funguje mi sub locale_sort { use locale; sort @_ }, ale že by se mi to
chtělo cpát do každého skriptu, kde potřebuju české řazení nad UTF-8 daty...
Díky, P.
Další informace o konferenci Perl