The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

CzFast - Perl module for czech charsets manipulation

SYNOPSIS

Further documentation of this module is available only in czech language.

        use CzFast qw( &czrecode &czregexp &detect_client_charset );
        
        my $str = 'Drogy ne !';

        # Prekodovani retezce z jednoho kodovani do druheho:
        my $recoded_str = &czrecode('windows-1250', 'iso-8859-2', $str);

        # Ziskani regulerniho vyrazu pro porovnavani bez ohledu
        # na diakritiku a velka/mala pismena:   
        my $diacritics_unsensitive_regexp = &czregexp($str);
        
        # Detekce kodovani WWW klienta: 
        my $charset = &detect_client_charset(); 

DESCRIPTION

Modul rozeznava tyto identifikatory znakovych sad a jejich varianty:

        us-ascii        nebo ascii
        iso-8859-1
        iso-8859-2      nebo unix
        windows-1250    nebo windows
        kam             nebo kamenicti
        pclatin2
        koi8cs    
        apple-ce        nebo mac          nebo macintosh
        cp850 

V identifikatorech se nerozlisuji mala a velka pismena.

Funkce czregexp je velmi uzitecna zejmena pro vyhledavani v databazich, podporujicich regulerni vyrazy. Implementace pocita s sesti kombinacemi pro pismena E a U - varianty s carkou i hackem, resp. carkou i krouzkem. Vstupem teto funkce musi byt retezec v kodovani iso-8859-2 (unix).

Funkce provadi eskejpovani znaku, ktere maji v tride charakteru regulernich vyrazu specialni vyznam - '^', '-' a ']'. Toto eskejpovani je mozne provest dvema zpusoby, standardnim POSIX pouzivanym napr. programem grep, nebo zpusobem nutnym v Perlove implementaci. V pripade Perlu je eskejpovani provadeno jinak a s ohledem na dalsi skupiny znaku se specialnim vyznamem, jako je napr. '\w' nebo znak '\'. Funkce implicitne eskejpuje pro Perl, eskejpovani POSIX lze aktivovat pomoci volitelneho druheho parametru. Pokud je tento druhy parametr true - napr. retezec 'posix' nebo hodnota '1', eskejpuje funkce dle POSIXU.

Pro pouziti v SQL je nutne zvolit spravny format eskejpovani podle toho, ktery pouziva vase databaze. Napr. databaze MySQL pouziva eskejpovani POSIX, a je pak tedy nutne tuto funkci volat jako &czregexp($str, 1).

Prvnim parametrem funkce czrecode je vstupni kodovani, druhym vystupni kodovani a tretim retezec, ktery ma byt prekodovan. Vstupni retezec neni modifikovan, funkce vraci prekodovany vstup jako svou navratovou hodnotu.

Funkce detect_client_charset vyuziva promenne prostredi, nastavovane webserverem pro spoustene CGI programy na zaklade HTTP hlavicek zaslanych klientem, pro urceni jake kodovani cestiny tento klient pouziva. Vraci kodovani klienta ve forme identifikatoru popsanych vyse, v jejich zakladni variante (ie. jako napr. 'windows-1250').

Jadro modulu je z duvodu vyssi rychlosti napsano v jazyce C, jako dynamicky zavadeny objekt interpretu Perlu. Pro systemy nepodporujici dynamicke zavadeni za behu, je mozne modul staticky slinkovat s interpretem pri jeho kompilaci. Toto je blize popsano v dokumentaci Perlu. Modul je takto vyrazne rychlejsi nez jine dostupne Perl moduly pro prekodovani. Modul vyuziva konverzni mapy vytvorene Jaromirem Doleckem pro projekt csacek (http://www.csacek.cz) a je csackem inspirovan i v reseni detekce kodovani klienta.

AUTHOR

Tomas Styblo, tripiecz@yahoo.com

Prague, the Czech republic

This program uses character tables created by Jaromir Dolecek for the Csacek project (http://www.csacek.cz).

LICENSE

CzFast - Perl module for czech charsets manipulation

Copyright (C) 2000 Tomas Styblo (tripiecz@yahoo.com)

This program uses character tables created by Jaromir Dolecek for the Csacek project (http://www.csacek.cz).

This module is free software; you can redistribute it and/or modify it under the terms of either:

a) the GNU General Public License as published by the Free Software Foundation; either version 1, or (at your option) any later version, or

b) the "Artistic License" which comes with this module.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See either the GNU General Public License or the Artistic License for more details.

You should have received a copy of the Artistic License with this module, in the file ARTISTIC. If not, I'll be glad to provide one.

You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA

SEE ALSO

perl(1).