summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorKarl Williamson <public@khwilliamson.com>2011-06-15 14:32:14 -0600
committerKarl Williamson <public@khwilliamson.com>2011-06-15 14:34:02 -0600
commit363879a0952f77ca92caac0ce999916648a45173 (patch)
treed179bfdcd9d7acd6d516a4712542e0c9bd191f0e /lib
parent0d66b88d99cbe219f6c39408ee83f70759b609b3 (diff)
downloadperl-363879a0952f77ca92caac0ce999916648a45173.tar.gz
charnames: Quote metachars in script names
"use charnames qw(.*)" will match any script; it should match none.
Diffstat (limited to 'lib')
-rw-r--r--lib/charnames.pm4
-rw-r--r--lib/charnames.t4
2 files changed, 6 insertions, 2 deletions
diff --git a/lib/charnames.pm b/lib/charnames.pm
index 23c53b7b19..020ab7ce61 100644
--- a/lib/charnames.pm
+++ b/lib/charnames.pm
@@ -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,
diff --git a/lib/charnames.t b/lib/charnames.t
index 443738a7cc..dc6487af9d 100644
--- a/lib/charnames.t
+++ b/lib/charnames.t
@@ -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.