This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
UCD.pm: Only calculate hex once
authorKarl Williamson <public@khwilliamson.com>
Wed, 21 Sep 2011 16:06:21 +0000 (10:06 -0600)
committerKarl Williamson <public@khwilliamson.com>
Wed, 21 Sep 2011 16:23:56 +0000 (10:23 -0600)
This uses intermediate variables to store the output of hex(), with the
result that if there is an $end, its hex only is calculated once.

lib/Unicode/UCD.pm

index 7e43704..e18bd60 100644 (file)
@@ -6,7 +6,7 @@ no warnings 'surrogate';    # surrogates can be inputs to this
 use charnames ();
 use Unicode::Normalize qw(getCombinClass NFD);
 
-our $VERSION = '0.35';
+our $VERSION = '0.36';
 
 use Storable qw(dclone);
 
@@ -467,14 +467,15 @@ sub _read_table ($;$) {
         my ($start, $end, $value) = / ^ (.+?) \t (.*?) \t (.+?)
                                         \s* ( \# .* )?  # Optional comment
                                         $ /x;
-        $end = $start if $end eq "";
+        my $decimal_start = hex $start;
+        my $decimal_end = ($end eq "") ? $decimal_start : hex $end;
         if ($return_hash) {
-            foreach my $i (hex $start .. hex $end) {
+            foreach my $i ($decimal_start .. $decimal_end) {
                 $return{$i} = $value;
             }
         }
         else {
-            push @return, [ hex $start, hex $end, $value ];
+            push @return, [ $decimal_start, $decimal_end, $value ];
         }
     }
     return ($return_hash) ? %return : @return;