--- ../perl-5.8.7/t/uni/class.t 2005-04-25 19:05:26.000000000 +0530 +++ class.t 2005-12-20 13:35:29.000000000 +0530 @@ -24,9 +24,12 @@ &Other::Class END } - - -my $str = join "", map chr($_), 0x20 .. 0x6F; +if (ord('A') == 193) { +$str = join "", map chr($_), 0x40, 0x5A, 0x7F, 0x7B, 0x5B, 0x6C, 0x50, 0x7D, 0x4D, 0x5D, 0x5C, 0x4E, 0x6B, 0x60, 0x4B, 0x61, 0xF0 .. 0xF9, 0x7A, 0x5E, 0x4C, 0x7E, 0x6E, 0x6F, 0x7C, 0xC1 .. 0xC9, 0xD1 .. 0xD9, 0xE2 .. 0xE9, 0xAD, 0xE0, 0xBD, 0x5F, 0x6D, 0x79, 0x81 .. 0x89, 0x91 .. 0x96; # IBM-1047 +} +else { +$str = join "", map chr($_), 0x20 .. 0x6F; +} # make sure it finds built-in class is(($str =~ /(\p{Letter}+)/)[0], 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'); @@ -78,7 +81,22 @@ next unless -e $filename; my ($h1, $h2) = map hex, split /\t/, (do $filename); - my $str = join "", map chr, $h1 .. (($h2 || $h1) + 1); + $str = ""; + if ((ord ('A') == 193) && ($h1 < 256)) { + $h3 = ($h2 || $h1) + 1; + if ($h3 - $h1 == 1) { + $str = join "", pack'U*', $h1 .. $h3; # using pack since chr doesnt generate unicode chars for value < 256 + } + elsif ($h3 - $h1 > 1) { + $str = ""; + for ($i=$h1;$i<=$h3;$i++) { + $str = join "", $str, pack'U*',$i; + } + } + } + else { + $str = join "", map chr, $h1 .. (($h2 || $h1) + 1); + } for my $p ($prop_name, $abbrev) { for my $c ($files->{$_}, $_) { @@ -98,7 +116,22 @@ next unless -e $filename; my ($h1, $h2) = map hex, split /\t/, (do $filename); - my $str = join "", map chr, $h1 .. (($h2 || $h1) + 1); + $str = ""; + if ((ord ('A') == 193) && ($h1 < 256)) { + $h3 = ($h2 || $h1) + 1; + if ($h3 - $h1 == 1) { + $str = join "", pack'U*', $h1 .. $h3; # using pack since chr doesnt generate unicode characters for value < 255 + } + elsif ($h3 - $h1 > 1) { + $str = ""; + for ($i=$h1;$i<=$h3;$i++) { + $str = join "", $str, pack'U*',$i; + } + } + } + else { + $str = join "", map chr, $h1 .. (($h2 || $h1) + 1); + } for my $x ($p, { gc => 'General Category', sc => 'Script' }->{$p}) { for my $y ($abbr, $utf8::PropValueAlias{$p}{$abbr}, $utf8::PVA_abbr_map{gc_sc}{$abbr}) { @@ -137,7 +170,22 @@ my $filename = File::Spec->catfile($dirname, $leafname); my ($h1, $h2) = map hex, split /\t/, (do $filename); - my $str = join "", map chr, $h1 .. (($h2 || $h1) + 1); + $str = ""; + if ((ord ('A') == 193) && ($h1 < 256)) { + $h3 = ($h2 || $h1) + 1; + if ($h3 - $h1 == 1) { + $str = join "", pack'U*', $h1 .. $h3; # using pack sincechr doesnt generate unicode chars for value < 256 + } + elsif ($h3 - $h1 > 1) { + $str = ""; + for ($i=$h1;$i<=$h3;$i++) { + $str = join "", $str, pack'U*',$i; + } + } + } + else { + $str = join "", map chr, $h1 .. (($h2 || $h1) + 1); + } for my $x ('gc', 'General Category') { print "# $filename $x $_, $utf8::PA_reverse{$_}\n"; @@ -159,7 +207,22 @@ next unless -e $filename; my ($h1, $h2) = map hex, split /\t/, (do $filename); - my $str = join "", map chr, $h1 .. (($h2 || $h1) + 1); + $str = ""; + if ((ord ('A') == 193) && ($h1 < 256)) { + $h3 = ($h2 || $h1) + 1; + if ($h3 - $h1 == 1) { + $str = join "", pack'U*', $h1 .. $h3; # using pack sincechr doesnt generate unicode chars for value < 256 + } + elsif ($h3 - $h1 > 1) { + $str = ""; + for ($i=$h1;$i<=$h3;$i++) { + $str = join "", $str, pack'U*',$i; + } + } + } + else { + $str = join "", map chr, $h1 .. (($h2 || $h1) + 1); + } my $blk = $_;