Localise $/ properly in UCD.pm
authorFather Chrysostomos <sprout@cpan.org>
Thu, 17 Nov 2011 23:53:18 +0000 (15:53 -0800)
committerFather Chrysostomos <sprout@cpan.org>
Thu, 17 Nov 2011 23:54:32 +0000 (15:54 -0800)
Localisation of $/ in the module‚Äôs main CV is undone once the module
finishes loading, and hence has no effect on its function after that.
Each function that uses readline has to localise $/ itself.

lib/Unicode/UCD.pm
lib/Unicode/UCD.t

index af1391a..e1a6cdb 100644 (file)
@@ -8,9 +8,6 @@ use Unicode::Normalize qw(getCombinClass NFD);
 
 our $VERSION = '0.37';
 
-local $_;
-local $/ = "\n";
-
 use Storable qw(dclone);
 
 require Exporter;
@@ -569,6 +566,7 @@ sub _charblocks {
     unless (@BLOCKS) {
        if (openunicode(\$BLOCKSFH, "Blocks.txt")) {
            local $_;
+           local $/ = "\n";
            while (<$BLOCKSFH>) {
                if (/^([0-9A-F]+)\.\.([0-9A-F]+);\s+(.+)/) {
                    my ($lo, $hi) = (hex($1), hex($2));
@@ -1001,6 +999,7 @@ sub _casefold {
     unless (%CASEFOLD) {
        if (openunicode(\$CASEFOLDFH, "CaseFolding.txt")) {
            local $_;
+           local $/ = "\n";
            while (<$CASEFOLDFH>) {
                if (/^([0-9A-F]+); ([CFIST]); ([0-9A-F]+(?: [0-9A-F]+)*);/) {
                    my $code = hex($1);
@@ -1163,6 +1162,7 @@ sub _casespec {
     unless (%CASESPEC) {
        if (openunicode(\$CASESPECFH, "SpecialCasing.txt")) {
            local $_;
+           local $/ = "\n";
            while (<$CASESPECFH>) {
                if (/^([0-9A-F]+); ([0-9A-F]+(?: [0-9A-F]+)*)?; ([0-9A-F]+(?: [0-9A-F]+)*)?; ([0-9A-F]+(?: [0-9A-F]+)*)?; (\w+(?: \w+)*)?/) {
                    my ($hexcode, $lower, $title, $upper, $condition) =
@@ -1259,6 +1259,7 @@ sub _namedseq {
     unless (%NAMEDSEQ) {
        if (openunicode(\$NAMEDSEQFH, "Name.pl")) {
            local $_;
+           local $/ = "\n";
            while (<$NAMEDSEQFH>) {
                if (/^ [0-9A-F]+ \  /x) {
                     chomp;
@@ -3028,6 +3029,7 @@ my $UNICODEVERSION;
 sub UnicodeVersion {
     unless (defined $UNICODEVERSION) {
        openunicode(\$VERSIONFH, "version");
+       local $/ = "\n";
        chomp($UNICODEVERSION = <$VERSIONFH>);
        close($VERSIONFH);
        croak __PACKAGE__, "::VERSION: strange version '$UNICODEVERSION'"
index b904d9a..6d8c628 100644 (file)
@@ -19,6 +19,8 @@ use Test::More;
 
 use Unicode::UCD 'charinfo';
 
+$/ = 7;
+
 my $charinfo;
 
 is(charinfo(0x110000), undef, "Verify charinfo() of non-unicode is undef");
@@ -549,6 +551,7 @@ is_deeply(\@list,
 # Get the official Unicode property name synonyms and test them.
 open my $props, "<", "../lib/unicore/PropertyAliases.txt"
                 or die "Can't open Unicode PropertyAliases.txt";
+$/ = "\n";
 while (<$props>) {
     s/\s*#.*//;           # Remove comments
     next if /^\s* $/x;    # Ignore empty and comment lines