Re: pack('C'...) sets UTF8 flag

[email protected] ("Bob Hallissy")
Newsgroups perl.unicode
Message-ID <OF0C584AAF.DF9DAB41-ON80257037.0032F4A1-80257037.0033DA93@notes.sil.org>
Followup: we do *not* see this failure if we flatten the loop, e.g:

use strict;
my $s ;
$s = pack('C', 200);
print "pack('C', 200): is_utf8=" . (utf8::is_utf8($s) ? 'yes' : 'no '). 
"\t$s\t" . join(',', unpack('C*', $s)) . "\n";
$s = pack('U', 200);
print "pack('U', 200): is_utf8=" . (utf8::is_utf8($s) ? 'yes' : 'no '). 
"\t$s\t" . join(',', unpack('C*', $s)) . "\n";
$s = pack('C', 200);
print "pack('C', 200): is_utf8=" . (utf8::is_utf8($s) ? 'yes' : 'no '). 
"\t$s\t" . join(',', unpack('C*', $s)) . "\n";

The failure (as below) occurs on Windows, Linux, and OSX.

Bob

On 2005-07-06 03:43:50 PM "Bob Hallissy" wrote:

>Am I doing something wrong or is this a bug:
>
>use strict;
>my $p;
>foreach $p (qw (C U C))
>{
>my $s = pack($p, 200);
>print "pack('$p', 200): is_utf8=" . (utf8::is_utf8($s) ? 'yes' : 'no ')
>. "\t$s\t" . join(',', unpack('C*', $s)) . "\n";
>}
>
>Generates the following output:
>
>pack('C', 200): is_utf8=no      ╚       200
>pack('U', 200): is_utf8=yes     ╚       195,136
>Wide character in print at T:\test2.pl line 8.
>pack('C', 200): is_utf8=yes     ╚       200
>
>Specifically, the first and last ought to be the same, and I shouldn't be
>getting that error.
>
>Seen on perl 5.8.3, 5.8.6 and 5.8.7. E.g., my current perl -v:
>This is perl, v5.8.7 built for MSWin32-x86-multi-thread
>(with 7 registered patches, see perl -V for more detail)
>
>Copyright 1987-2005, Larry Wall
>
>Binary build 813 [148120] provided by ActiveState
>http://www.ActiveState.com
>ActiveState is a division of Sophos.
>Built Jun  6 2005 13:36:37
>
>TIA,
>
>Bob
>
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.