Bjoern Hoehrmann <[EMAIL PROTECTED]> writes: >* Bjoern Hoehrmann wrote: >> Enocde 2.08, PerlIO::scalar 0.02, ActivePerl 5.8.2, >> >> #!perl -w >> use strict; >> use warnings; >> use Encode; >> >> my $string = encode(UTF16 => ""); >> >> for (qw/UTF-8 UTF-16LE UTF-16BE UTF-32LE UTF-32BE/) >> { >> my $backup = $string; >> open F, "<:encoding($_)", \$backup; >> my $char; >> read F, $char, 1, 0; >> close F; >> >> die unless $backup eq $string; >> }
There are no "readonly scalars" there. >> >>Gives >> >> utf8 "\xFE" does not map to Unicode at ... line 13. >> utf8 "\xFF" does not map to Unicode at ... line 13. >> Unicode character 0xfffe is illegal at ... line 13. >> Died at ... line 16. > >Perl ActivePerl 5.8.4 and the same PerlIO::scalar/Encode the result is > > utf8 "\xFE" does not map to Unicode at 1.pl line 13. > Unicode character 0xfffe is illegal at 1.pl line 13. > Died at 1.pl line 16. > >Which is still not what I would expect... It seems UTF-16LE encoding does not work right with PerlIO::scalar It is not clear which is at fault. Personally, I would be more motivated to fix whichever is at fault if you explain why you are trying to read one character from a stream with no characters in it (except a BOM).