In pod_lib.pl's get_pod_metadata(), generate lookup hashes directly.
authorNicholas Clark <nick@ccl4.org>
Tue, 8 Nov 2011 08:45:24 +0000 (09:45 +0100)
committerNicholas Clark <nick@ccl4.org>
Fri, 18 Nov 2011 10:08:57 +0000 (11:08 +0100)
Previously the code was structured to build arrays for various categories of
files, then generate hashes from those arrays. However, the arrays had no
other purpose, and the values in the hashes were only needed for truth tests,
so it's better to generate the lookup hashes directly.

@disk_pods hasn't actually been used since commit d5e2eea989a69524 refactored
pod/buildtoc to no longer chdir to the pod/ directory.

Porting/pod_lib.pl

index 484c050..00ab4b7 100644 (file)
@@ -107,10 +107,7 @@ sub get_pod_metadata {
 
     # Sanity cross check
 
-    my (%disk_pods, @disk_pods);
-    my (@manipods, %manipods);
-    my (@manireadmes, %manireadmes);
-    my (@perlpods, %perlpods);
+    my (%disk_pods, %manipods, %manireadmes, %perlpods);
     my (@cpanpods, %cpanpods, %cpanpods_short);
     my (%our_pods);
 
@@ -128,7 +125,6 @@ sub get_pod_metadata {
     opendir my $dh, 'pod';
     while (defined ($_ = readdir $dh)) {
         next unless /\.pod\z/;
-        push @disk_pods, $_;
         ++$disk_pods{$_};
     }
 
@@ -140,10 +136,10 @@ sub get_pod_metadata {
         chomp;
         s/\s+.*$//;
         if (m!^pod/([^.]+\.pod)!i) {
-            push @manipods, $1;
+            ++$manipods{$1};
         } elsif (m!^README\.(\S+)!i) {
             next if $state{ignore}{$1};
-            push @manireadmes, "perl$1.pod";
+            ++$manireadmes{"perl$1.pod"};
         } elsif (exists $our_pods{$_}) {
             push @cpanpods, $_;
             $disk_pods{$_}++
@@ -152,8 +148,6 @@ sub get_pod_metadata {
     }
     close $mani or my_die "close MANIFEST: $!\n";
 
-    @manipods{@manipods} = @manipods;
-    @manireadmes{@manireadmes} = @manireadmes;
     @cpanpods{@cpanpods} = map { s/.*\///r } @cpanpods;
     %cpanpods_short = reverse %cpanpods;
 
@@ -161,14 +155,13 @@ sub get_pod_metadata {
     while (<$perlpod>) {
         if (/^For ease of access, /../^\(If you're intending /) {
             if (/^\s+(perl\S*)\s+\w/) {
-                push @perlpods, "$1.pod";
+                ++$perlpods{"$1.pod"};
             }
         }
     }
     close $perlpod or my_die "close perlpod: $!\n";
     my_die "could not find the pod listing of perl.pod\n"
-        unless @perlpods;
-    @perlpods{@perlpods} = @perlpods;
+        unless %perlpods;
 
     my @inconsistent;
     foreach my $i (sort keys %disk_pods) {