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).