Portál AbcLinuxu, 9. května 2025 23:57
Prvně potřebuju v perlu parsovat český text a hned narazím
use locale;
my $row = <>;
chomp($row);
$row =~ s/(\w)/$1_/g;
print $row;
Po zpracování řetězce "příliš žluťoučký kůň" regulárním výrazem je v $row "p_říl_i_š žl_u_ťo_u_čk_ý k_ůň" místo očekávaného "p_ř_í_l_i_š ž_l_u_ť_o_u_č_k_ý k_ů_ň". Zřejmě národní znaky nepočítá mezi alfanumerické.
Perl 5.8.8, locales IMHO správně nastaveny na cs_CZ.UTF-8 (vč. LC_CTYPE). Zkoušel jsem i pragmu use utf8, ale bezvýsledně.
use utf8; ... $row =~ s/(\p{L})/$1_/g;
Zkoušel jsem to, ale aby to skutečně pracovalo s unicode znaky, musel jsem nastavit ovladač vstupu do utf8 "modu" voláním funkce binmode. Je to tak nutné dělat nebo jsem něco přehlédl ?
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.