This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
In checkcfgvar.pl, split the configure.com code out.
authorNicholas Clark <nick@ccl4.org>
Fri, 16 Sep 2011 10:19:15 +0000 (12:19 +0200)
committerNicholas Clark <nick@ccl4.org>
Wed, 21 Sep 2011 08:40:57 +0000 (10:40 +0200)
The configure.com handling is actually sufficiently different that it's
simpler to do it in its own loop. The two regexs for config.sh-style parsing
can be merged. Use non-capturing parens for the parts of regexs that don't
need to be captured.

Porting/checkcfgvar.pl

index 5c3bc2e..d288f3c 100755 (executable)
@@ -83,32 +83,29 @@ for my $cfg (sort @CFG) {
     my %cfg;
 
     open my $fh, '<', $cfg;
-    while (<$fh>) {
-       next if /^\#/ || /^\s*$/ || /^\:/;
-       if ($cfg eq 'configure.com') {
+
+    if ($cfg eq 'configure.com') {
+       ++$cfg{startperl}; # Cheat.
+
+       while (<$fh>) {
+           next if /^\#/ || /^\s*$/ || /^\:/;
            s/(\s*!.*|\s*)$//; # remove trailing comments or whitespace
-           next if ! /^\$\s+WC "(\w+)='(.*)'"$/;
-       }
-       # foo='bar'
-       # foo=bar
-       if (/^(\w+)='(.*)'$/) {
-           $cfg{$1}++;
+           ++$cfg{$1} if /^\$\s+WC "(\w+)='(?:.*)'"$/;
        }
-       elsif (/^(\w+)=(.*)$/) {
-           $cfg{$1}++;
-       }
-       elsif (/^\$\s+WC "(\w+)='(.*)'"$/) {
-           $cfg{$1}++;
-       } else {
-           warn "$cfg:$.:$_";
+    } else {
+       while (<$fh>) {
+           next if /^\#/ || /^\s*$/ || /^\:/;
+           # foo='bar'
+           # foo=bar
+           if (/^(\w+)=('?)(?:.*)\2$/) {
+               ++$cfg{$1};
+           } else {
+               warn "$cfg:$.:$_";
+           }
        }
     }
     close $fh;
 
-    if ($cfg eq 'configure.com') {
-       $cfg{startperl}++; # Cheat.
-    }
-
     my $problems;
     for my $v (@MASTER_CFG) {
        exists $cfg{$v} and next;