[comp.lang.perl] Improvements to inctree

worley@compass.com (Dale Worley) (03/27/91)

The following patch fixes three problems with the inctree program from
chapter 6 of The Book:

1) It adds a usage message.

2) Lines that found with -m and output are indented with -'s, so you
can tell which file they are from.

3) If the eval of $sub fails, it outputs the error message and stops.

Dale

Dale Worley		Compass, Inc.			worley@compass.com
--
Artificial intelligence has failed, but natural stupidity is still
going strong.	-- John Pates

*** /usr/sysmgr/mcmullan/perl/book-examples/ch6/inctree	Tue Jan  8 12:57:24 1991
--- /home/worley/bin/inctree	Tue Mar 26 15:37:00 1991
***************
*** 10,15 ****
--- 10,29 ----
  
  $shiftwidth = 4;
  
+ # Usage message
+ 
+ if ($#ARGV < $[) {
+ 	print STDERR <<EOF;
+ Usage:	$0 [-Dsymbol] [-Idir] [-m/pat/] file ...
+ 
+ where:	-Dsymbol	#defines symbol
+ 	-Idir		searches for #includes in dir
+ 	-m/pat/		prints lines matching Perl regexp /pat/
+ 			delimiter must be supplied, trailing i may be added
+ EOF
+ 	exit 1;
+ }
+ 
  # Process switches.
  
  while ($ARGV[0] =~ /^-/) {
***************
*** 36,45 ****
  if (@pats) {
      $sub = "sub pats {\n";
      foreach $pat (@pats) {
! 	$sub .= "    print '>>>>>>> ',\$_ if m$pat;\n";
      }
      $sub .= "}\n";
      eval $sub;
      ++$pats;
  }
  
--- 50,60 ----
  if (@pats) {
      $sub = "sub pats {\n";
      foreach $pat (@pats) {
! 	$sub .= "    print '-' x (\$indent - $shiftwidth), '>>>>>>> ', \$_ if m$pat;\n";
      }
      $sub .= "}\n";
      eval $sub;
+     die "Error building search routine: $@" if $@;
      ++$pats;
  }