Chyba v PerlIO::encoding?

Jan Kasprzak kas na fi.muni.cz
Středa Únor 6 12:34:58 CET 2008


	Zdravim,

pouzivate nekdo prekodovani dat v I/O streamu pres

binmode $fh, ":encoding($kodovani)";

(pripadne totez s triparametrovym open)?

	Narazil jsem na problem, kdyz jsem si chtel nastavit reakci na chyby
(ne vzdy odhadnu kodovani presne, nebo obcas vstupni data obsahuji
nesmysly). Chtel jsem napriklad nahradit chybny znak otaznikem,
coz se dela podle "perldoc PerlIO::encoding" tak, ze pred binmode
nebo open zavolate

$PerlIO::encoding::fallback = sub { '?' };

(je treba $Encode::VERSION >= 2.12, pro starsi lze pouzit misto
	sub { ... } jen nejakou konstantu, treba Encode::FB_PERLQQ).

	Problem je, ze toto se mi chovalo divne - v momente kdy (zrejme)
byl na vstupu chybny znak, tak nasledujici cteci operace (zkousel jsem
<$fh> nebo read $fh, ...) zacaly cist znova od zacatku souboru,
az dosly na to chybne misto, a tak furt dokola.

	Kdyz jsem binmode vyhodil a naopak delal na nactena
data Encode::decode($kodovani, $data, sub { '?' }), tak vse fungovalo
jak ma.

	Bohuzel jsem se zatim nedostal k vyrobeni minimalniho test case,
jen se ptam, jestli jste se nekdo s necim takovym potkal.

-Y.


-- 
| Jan "Yenya" Kasprzak  <kas at {fi.muni.cz - work | yenya.net - private}> |
| GPG: ID 1024/D3498839      Fingerprint 0D99A7FB206605D7 8B35FCDE05B18A5E |
| http://www.fi.muni.cz/~kas/    Journal: http://www.fi.muni.cz/~kas/blog/ |
>>  If you find yourself arguing with Alan Cox, you’re _probably_ wrong.  <<
>>     --James Morris in "How and Why You Should Become a Kernel Hacker"  <<


Další informace o konferenci Perl