Commit f3fa95e40294a457685fda21f9feb6d997690b39

Steffen Jaeckel 2017-12-18T15:37:05

Merge pull request #96 from fperrad/20171208_perlcritic run perlcritic against booker.pl

diff --git a/doc/booker.pl b/doc/booker.pl
index 58f10d2..c2aa43f 100644
--- a/doc/booker.pl
+++ b/doc/booker.pl
@@ -9,21 +9,28 @@
 #This preprocessor will then open "file" and insert it as a verbatim copy.
 #
 #Tom St Denis
+use strict;
 
 #get graphics type
+my $graph;
 if (shift =~ /PDF/) {
    $graph = "";
 } else {
    $graph = ".ps";
 }
 
-open(IN,"<tommath.src") or die "Can't open source file";
-open(OUT,">tommath.tex") or die "Can't open destination file";
+open(my $in, '<', 'tommath.src') or die "Can't open source file";
+open(my $out, '>', 'tommath.tex') or die "Can't open destination file";
 
 print "Scanning for sections\n";
-$chapter = $section = $subsection = 0;
-$x = 0;
-while (<IN>) {
+my $chapter = 0;
+my $section = 0;
+my $subsection = 0;
+my $x = 0;
+my %index1;
+my %index2;
+my %index3;
+while (<$in>) {
    print ".";
    if (!(++$x % 80)) { print "\n"; }
    #update the headings
@@ -40,25 +47,29 @@ while (<IN>) {
    }
 
    if ($_ =~ m/MARK/) {
-      @m = split(",",$_);
-      chomp(@m[1]);
-      $index1{@m[1]} = $chapter;
-      $index2{@m[1]} = $section;
-      $index3{@m[1]} = $subsection;
+      my @m = split ',', $_;
+      chomp $m[1];
+      $index1{$m[1]} = $chapter;
+      $index2{$m[1]} = $section;
+      $index3{$m[1]} = $subsection;
    }
 }
-close(IN);
+close $in;
 
-open(IN,"<tommath.src") or die "Can't open source file";
-$readline = $wroteline = 0;
-$srcline = 0;
+open($in, '<', 'tommath.src') or die "Can't open source file";
+my $readline = 0;
+my $wroteline = 0;
+my $srcline = 0;
+my $totlines;
+my @text;
 
-while (<IN>) {
+while (<$in>) {
    ++$readline;
    ++$srcline;
 
    if ($_ =~ m/MARK/) {
    } elsif ($_ =~ m/EXAM/ || $_ =~ m/LIST/) {
+      my $skipheader;
       if ($_ =~ m/EXAM/) {
          $skipheader = 1;
       } else {
@@ -67,28 +78,28 @@ while (<IN>) {
 
       # EXAM,file
       chomp($_);
-      @m = split(",",$_);
-      open(SRC,"<../$m[1]") or die "Error:$srcline:Can't open source file $m[1]";
+      my @m = split ',', $_;
+      open(my $src, '<', "../$m[1]") or die "Error:$srcline:Can't open source file $m[1]";
 
       print "$srcline:Inserting $m[1]:";
 
-      $line = 0;
-      $tmp = $m[1];
+      my $line = 0;
+      my $tmp = $m[1];
       $tmp =~ s/_/"\\_"/ge;
-      print OUT "\\vspace{+3mm}\\begin{small}\n\\hspace{-5.1mm}{\\bf File}: $tmp\n\\vspace{-3mm}\n\\begin{alltt}\n";
+      print {$out} "\\vspace{+3mm}\\begin{small}\n\\hspace{-5.1mm}{\\bf File}: $tmp\n\\vspace{-3mm}\n\\begin{alltt}\n";
       $wroteline += 5;
 
       if ($skipheader == 1) {
          # scan till next end of comment, e.g. skip license
-         while (<SRC>) {
+         while (<$src>) {
             $text[$line++] = $_;
             last if ($_ =~ /libtom\.org/);
          }
-         <SRC>;
+         <$src>;
       }
 
-      $inline = 0;
-      while (<SRC>) {
+      my $inline = 0;
+      while (<$src>) {
       next if ($_ =~ /\$Source/);
       next if ($_ =~ /\$Revision/);
       next if ($_ =~ /\$Date/);
@@ -101,34 +112,38 @@ while (<IN>) {
          $_ =~ s/\\/'\symbol{92}'/ge;
          $_ =~ s/\^/"\\"/ge;
 
-         printf OUT ("%03d   ", $line);
+         printf {$out} ("%03d   ", $line);
          for ($x = 0; $x < length($_); $x++) {
-             print OUT chr(vec($_, $x, 8));
+             print {$out} chr(vec($_, $x, 8));
              if ($x == 75) {
-                 print OUT "\n      ";
+                 print {$out} "\n      ";
                  ++$wroteline;
              }
          }
-         print OUT "\n";
+         print {$out} "\n";
          ++$wroteline;
       }
       $totlines = $line;
-      print OUT "\\end{alltt}\n\\end{small}\n";
-      close(SRC);
+      print {$out} "\\end{alltt}\n\\end{small}\n";
+      close $src;
       print "$inline lines\n";
       $wroteline += 2;
    } elsif ($_ =~ m/@\d+,.+@/) {
      # line contains [number,text]
      # e.g. @14,for (ix = 0)@
-     $txt = $_;
+     my $txt = $_;
      while ($txt =~ m/@\d+,.+@/) {
-        @m = split("@",$txt);      # splits into text, one, two
-        @parms = split(",",$m[1]);  # splits one,two into two elements
+        my @m = split '@', $txt;        # splits into text, one, two
+        my @parms = split ',', $m[1];   # splits one,two into two elements
 
         # now search from $parms[0] down for $parms[1]
-        $found1 = 0;
-        $found2 = 0;
-        for ($i = $parms[0]; $i < $totlines && $found1 == 0; $i++) {
+        my $found;
+        my $found1 = 0;
+        my $found2 = 0;
+        my $foundline;
+        my $foundline1;
+        my $foundline2;
+        for (my $i = $parms[0]; $i < $totlines && $found1 == 0; $i++) {
            if ($text[$i] =~ m/\Q$parms[1]\E/) {
               $foundline1 = $i + 1;
               $found1 = 1;
@@ -136,7 +151,7 @@ while (<IN>) {
         }
 
         # now search backwards
-        for ($i = $parms[0] - 1; $i >= 0 && $found2 == 0; $i--) {
+        for (my $i = $parms[0] - 1; $i >= 0 && $found2 == 0; $i--) {
            if ($text[$i] =~ m/\Q$parms[1]\E/) {
               $foundline2 = $i + 1;
               $found2 = 1;
@@ -163,7 +178,7 @@ while (<IN>) {
 
         # if found replace
         if ($found == 1) {
-           $delta = $parms[0] - $foundline;
+           my $delta = $parms[0] - $foundline;
            print "Found replacement tag for \"$parms[1]\" on line $srcline which refers to line $foundline (delta $delta)\n";
            $_ =~ s/@\Q$m[1]\E@/$foundline/;
         } else {
@@ -171,32 +186,31 @@ while (<IN>) {
         }
 
         # remake the rest of the line
-        $cnt = @m;
         $txt = "";
-        for ($i = 2; $i < $cnt; $i++) {
+        for (my $i = 2; $i < scalar(@m); $i++) {
             $txt = $txt . $m[$i] . "@";
         }
      }
-     print OUT $_;
+     print {$out} $_;
      ++$wroteline;
    } elsif ($_ =~ /~.+~/) {
       # line contains a ~text~ pair used to refer to indexing :-)
-      $txt = $_;
+      my $txt = $_;
       while ($txt =~ /~.+~/) {
-         @m = split("~", $txt);
+         my @m = split '~', $txt;
 
          # word is the second position
-         $word = @m[1];
-         $a = $index1{$word};
-         $b = $index2{$word};
-         $c = $index3{$word};
+         my $word = $m[1];
+         my $a = $index1{$word};
+         my $b = $index2{$word};
+         my $c = $index3{$word};
 
          # if chapter (a) is zero it wasn't found
          if ($a == 0) {
             print "ERROR: the tag \"$word\" on line $srcline was not found previously marked.\n";
          } else {
             # format the tag as x, x.y or x.y.z depending on the values
-            $str = $a;
+            my $str = $a;
             $str = $str . ".$b" if ($b != 0);
             $str = $str . ".$c" if ($c != 0);
 
@@ -239,29 +253,28 @@ while (<IN>) {
          }
 
          # remake rest of the line
-         $cnt = @m;
          $txt = "";
-         for ($i = 2; $i < $cnt; $i++) {
+         for (my $i = 2; $i < scalar(@m); $i++) {
              $txt = $txt . $m[$i] . "~";
          }
       }
-      print OUT $_;
+      print {$out} $_;
       ++$wroteline;
    } elsif ($_ =~ m/FIGU/) {
       # FIGU,file,caption
       chomp($_);
-      @m = split(",", $_);
-      print OUT "\\begin{center}\n\\begin{figure}[h]\n\\includegraphics{pics/$m[1]$graph}\n";
-      print OUT "\\caption{$m[2]}\n\\label{pic:$m[1]}\n\\end{figure}\n\\end{center}\n";
+      my @m = split ',', $_;
+      print {$out} "\\begin{center}\n\\begin{figure}[h]\n\\includegraphics{pics/$m[1]$graph}\n";
+      print {$out} "\\caption{$m[2]}\n\\label{pic:$m[1]}\n\\end{figure}\n\\end{center}\n";
       $wroteline += 4;
    } else {
-      print OUT $_;
+      print {$out} $_;
       ++$wroteline;
    }
 }
 print "Read $readline lines, wrote $wroteline lines\n";
 
-close (OUT);
-close (IN);
+close $out;
+close $in;
 
 system('perl -pli -e "s/\s*$//" tommath.tex');
diff --git a/makefile b/makefile
index 54711e8..5eddae4 100644
--- a/makefile
+++ b/makefile
@@ -144,7 +144,7 @@ new_file:
 	perl dep.pl
 
 perlcritic:
-	perlcritic *.pl
+	perlcritic *.pl doc/*.pl
 
 astyle:
 	astyle --options=astylerc $(OBJECTS:.o=.c) tommath*.h demo/*.c etc/*.c mtest/mtest.c