PATCH: [perl #113584] tr/// multiple transliterations
authorKarl Williamson <public@khwilliamson.com>
Mon, 11 Jun 2012 15:56:56 +0000 (09:56 -0600)
committerRicardo Signes <rjbs@cpan.org>
Sun, 24 Jun 2012 22:28:57 +0000 (18:28 -0400)
Commit 4de6d205aeab9ec737ca35ba4eb61f37cebefc55 failed to take into
consideration tr///.

lib/utf8_heavy.pl
t/op/tr.t

index 675a8d1..23e06f9 100644 (file)
@@ -533,10 +533,10 @@ sub _loose_name ($) {
         if ($list && ! $list_is_from_mktables) {
             my $taint = substr($list,0,0); # maintain taint
 
-            # Separate the extras from the code point list, and for
-            # user-defined properties, make sure the latter are well-behaved
-            # for downstream code.
-            if ($user_defined) {
+            # Separate the extras from the code point list, and make sure
+            # user-defined properties and tr/// are well-behaved for
+            # downstream code.
+            if ($user_defined || $none) {
                 my @tmp = split(/^/m, $list);
                 my %seen;
                 no warnings;
index 5baa431..61f570c 100644 (file)
--- a/t/op/tr.t
+++ b/t/op/tr.t
@@ -1,12 +1,14 @@
 # tr.t
 
+use utf8;
+
 BEGIN {
     chdir 't' if -d 't';
     @INC = '../lib';
     require './test.pl';
 }
 
-plan tests => 130;
+plan tests => 131;
 
 my $Is_EBCDIC = (ord('i') == 0x89 & ord('J') == 0xd1);
 
@@ -515,4 +517,12 @@ SKIP: {
     ok 1;
 }
 
+{ # [perl #113584]
+
+    my $x = "Perlα";
+    $x =~ tr/αα/βγ/;
+    note $x;
+    is($x, "Perlβ", "Only first of multiple transliterations is used");
+}
+
 1;