Date: | Wed, 22 May 2002 20:24:19 +0100 |
To: | Michael G Schwern <schwern [...] pobox.com> |
Cc: | Nicholas Clark <nick [...] ccl4.org>, Jesse <jesse [...] fsck.com>, perl5-porters [...] perl.org, bug-storable [...] rt.cpan.org |
Subject: | Re: Storable 2.0.0 fails on vendor perl on Mac OS X 10.1 |
From: | Nicholas Clark <nick [...] unfortu.net> |
On Wed, May 22, 2002 at 03:01:14PM -0400, Michael G Schwern wrote:
Show quoted text
> On Wed, May 22, 2002 at 12:12:12PM +0100, Nicholas Clark wrote:
> My results on 5.6.0 (Linux/PowerPC) are quite a bit noisier and are
> definately trying to compare different characters:
>
> t/downgrade.........NOK 34# Failed test (t/downgrade.t at line 99)
> # got: 'Ã'
> # expected: 'ß'
> t/downgrade.........NOK 37# Failed test (t/downgrade.t at line 99)
> # got: 'ÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃ'
> # expected: 'ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß'
> t/downgrade.........ok 59/59# Looks like you failed 2 tests of 59.
So are mine on FreeBSD when run through less:
not ok 34 - And it is the data we expected?
# Failed test (t/downgrade.t at line 99)
# got: 'Ã<9F>'
# expected: 'ß'
ok 35 - Thawed Long 8 bit utf8 data without error?
ok 36 - Thawed Long 8 bit utf8 data? isa SCALAR
not ok 37 - And it is the data we expected?
# Failed test (t/downgrade.t at line 99)
# got: 'Ã<9F>Ã<9F>Ã<9F>Ã<9F>Ã<9F>Ã<9F>Ã<9F>Ã<9F>Ã<9F>Ã<9F>Ã<9F>Ã<9F>Ã
<9F>Ã<9F>Ã<9F>Ã<9F>Ã<9F>Ã<9F>Ã<9F>Ã<9F>Ã<9F>Ã<9F>Ã<9F>Ã<9F>Ã<9F>Ã<9F>Ã<9F>Ã<9F>Ã
<9F>Ã<9F>Ã<9F>Ã<9F>Ã<9F>Ã<9F>Ã<9F>Ã<9F>Ã<9F>Ã<9F>Ã<9F>Ã<9F>Ã<9F>Ã<9F>Ã<9F>Ã<9F>Ã
<9F>Ã<9F>Ã<9F>Ã<9F>Ã<9F>Ã<9F>Ã<9F>Ã<9F>Ã<9F>Ã<9F>Ã<9F>Ã<9F>Ã<9F>Ã<9F>Ã<9F>Ã<9F>Ã
<9F>Ã<9F>Ã<9F>Ã<9F>Ã<9F>Ã<9F>Ã<9F>Ã<9F>Ã<9F>Ã<9F>Ã<9F>Ã<9F>Ã<9F>Ã<9F>Ã<9F>Ã<9F>Ã
<9F>Ã<9F>Ã<9F>Ã<9F>Ã<9F>Ã<9F>Ã<9F>Ã<9F>Ã<9F>Ã<9F>Ã<9F>Ã<9F>Ã<9F>Ã<9F>Ã<9F>Ã<9F>Ã
<9F>Ã<9F>Ã<9F>Ã<9F>Ã<9F>Ã<9F>Ã<9F>Ã<9F>Ã<9F>Ã<9F>Ã<9F>Ã<9F>Ã<9F>Ã<9F>Ã<9F>Ã<9F>Ã
<9F>Ã<9F>Ã<9F>Ã<9F>Ã<9F>Ã<9F>Ã<9F>Ã<9F>Ã<9F>Ã<9F>Ã<9F>Ã<9F>Ã<9F>Ã<9F>Ã<9F>Ã<9F>Ã
<9F>Ã<9F>Ã<9F>Ã<9F>Ã<9F>Ã<9F>Ã<9F>Ã<9F>Ã<9F>Ã<9F>Ã<9F>Ã<9F>Ã<9F>Ã<9F>Ã<9F>Ã<9F>Ã
<9F>Ã<9F>Ã<9F>Ã<9F>Ã<9F>Ã<9F>Ã<9F>Ã<9F>Ã<9F>Ã<9F>Ã<9F>Ã<9F>Ã<9F>Ã<9F>Ã<9F>Ã<9F>Ã
<9F>Ã<9F>Ã<9F>Ã<9F>Ã<9F>Ã<9F>Ã<9F>Ã<9F>Ã<9F>Ã<9F>Ã<9F>Ã<9F>Ã<9F>Ã<9F>Ã<9F>Ã<9F>Ã
<9F>Ã<9F>Ã<9F>Ã<9F>Ã<9F>Ã<9F>Ã<9F>Ã<9F>Ã<9F>Ã<9F>Ã<9F>Ã<9F>Ã<9F>Ã<9F>Ã<9F>Ã<9F>Ã
<9F>Ã<9F>Ã<9F>Ã<9F>Ã<9F>Ã<9F>Ã<9F>Ã<9F>Ã<9F>Ã<9F>Ã<9F>Ã<9F>Ã<9F>Ã<9F>Ã<9F>Ã<9F>Ã
<9F>Ã<9F>Ã<9F>Ã<9F>Ã<9F>Ã<9F>Ã<9F>Ã<9F>Ã<9F>Ã<9F>Ã<9F>Ã<9F>Ã<9F>Ã<9F>Ã<9F>Ã<9F>Ã
<9F>Ã<9F>Ã<9F>Ã<9F>Ã<9F>Ã<9F>Ã<9F>Ã<9F>Ã<9F>Ã<9F>Ã<9F>Ã<9F>Ã<9F>Ã<9F>Ã<9F>Ã<9F>Ã
<9F>Ã<9F>Ã<9F>Ã<9F>Ã<9F>Ã<9F>Ã<9F>Ã<9F>Ã<9F>Ã<9F>Ã<9F>Ã<9F>Ã<9F>Ã<9F>Ã<9F>Ã<9F>Ã
<9F>Ã<9F>Ã<9F>Ã<9F>'
# expected: 'ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß'
Show quoted text> > > The old Storable worked great. Storable 2.0.0 fails tests consistently
> > > like this:
> >
> > > t/downgrade.....NOK 34# Failed test (t/downgrade.t at line 99)
> > > # got: '??'
> > > # expected: '?
> > > t/downgrade.....NOK 37# Failed test (t/downgrade.t at line 99)
> Looks like ASCII 223 and 195 + ... I'm not quite sure what the second
> character is.
The char 0x9F or 0237 is the second byte of the utf8 encoding for ß
They aren't 2 characters - they're the same character:
#!/usr/local/bin/perl5.6.0
use warnings;
use strict;
my $utf8 = "\x{DF}\x{100}";
chop $utf8;
my $byte = "\xDF";
if ($utf8 eq $byte) {
printf "Yes\n";
} else {
print "No\n";
printf "%d byte of %d, %b byte of %d\n", length $utf8, ord $utf8,
length $byte, ord $byte;
}
print "utf8 is $utf8\n";
print "byte is $byte\n";
__END__
I run that through less to show the unprintable character as <9F> and for
perl5.6.0 I see:
No
1 byte of 223, 1 byte of 223
utf8 is Ã<9F>
byte is ß
With perl5.6.1 I see:
Yes
utf8 is Ã<9F>
byte is ß
because perl5.6.1, er, doesn't grok printing utf8. That's why I feel that
finishing 5.8 is important.
Nicholas Clark
--
Even better than the real thing: http://nms-cgi.sourceforge.net/