charnames: Quote metachars in script names
authorKarl Williamson <public@khwilliamson.com>
Wed, 15 Jun 2011 20:32:14 +0000 (14:32 -0600)
committerKarl Williamson <public@khwilliamson.com>
Wed, 15 Jun 2011 20:34:02 +0000 (14:34 -0600)
"use charnames qw(.*)" will match any script; it should match none.

lib/charnames.pm
lib/charnames.t

index 23c53b7..020ab7c 100644 (file)
@@ -2,7 +2,7 @@ package charnames;
 use strict;
 use warnings;
 use File::Spec;
-our $VERSION = '1.19';
+our $VERSION = '1.21';
 
 use bytes ();          # for $bytes::hint_bits
 
@@ -803,7 +803,7 @@ sub import
                                                   # as tested for in
                                                   # lookup_names
   $^H{charnames_short} = delete $h{':short'} || 0;
-  my @scripts = map uc, keys %h;
+  my @scripts = map { uc quotemeta } keys %h;
 
   ##
   ## If utf8? warnings are enabled, and some scripts were given,
index 443738a..dc6487a 100644 (file)
@@ -700,6 +700,10 @@ is("\N{U+1D0C5}", "\N{BYZANTINE MUSICAL SYMBOL FTHORA SKLIRON CHROMA VASIS}");
     is($res, "foo-foo-1--2-3");
 }
 
+{   use charnames qw(.*);
+    ok (! defined charnames::vianame("a"), "Verify that metachars in script names get quoted");
+}
+
 {
     # Test scoping.  Outer block sets up some things; inner blocks
     # override them, and then see if get restored.