charnames: More fix to work on EBCDIC.
authorKarl Williamson <khw@cpan.org>
Mon, 24 Nov 2014 18:22:00 +0000 (11:22 -0700)
committerKarl Williamson <khw@cpan.org>
Mon, 24 Nov 2014 22:11:52 +0000 (15:11 -0700)
This adds a couple of fixes omitted from
27c3afbd6068ac83b49a11df3e33758ef059027e.

lib/charnames.pm

index 28e0282..2efe3d5 100644 (file)
@@ -49,7 +49,7 @@ sub vianame
     # can't change it because of backward compatibility.  New code can use
     # string_vianame() instead.
     my $ord = CORE::hex $1;
-    return chr $ord if $ord <= 255 || ! ((caller 0)[8] & $bytes::hint_bits);
+    return pack("U", $ord) if $ord <= 255 || ! ((caller 0)[8] & $bytes::hint_bits);
     _charnames::carp _charnames::not_legal_use_bytes_msg($arg, chr $ord);
     return;
   }
@@ -74,7 +74,7 @@ sub string_vianame {
   if ($arg =~ /^U\+([0-9a-fA-F]+)$/) {
 
     my $ord = CORE::hex $1;
-    return chr $ord if $ord <= 255 || ! ((caller 0)[8] & $bytes::hint_bits);
+    return pack("U", $ord) if $ord <= 255 || ! ((caller 0)[8] & $bytes::hint_bits);
 
     _charnames::carp _charnames::not_legal_use_bytes_msg($arg, chr $ord);
     return;