I'm trying to convert over from yrs of not bothering to use `my var;' for
variables in my scripts (All are less than 300 lines)

It seems to be a big pita for the most part with no real gain.  Given
the brief and simple nature of my scripting needs.  But that is
probably due to developing a sloppy style.

I'm not wanting to start a discussion about the value of using `my'
here, just looking for some advice on its use.

With a script that searches out specific regex from files that may be
buried in a complex tree, I want to print the hits of course but also
want to keep up with the filenames and  directories searched.  (only the
unique directories).

I'm not finding a simple and reliable way to use `my' in keeping with
the general reasons to do so.

My usage below is not in line with what is advocated here about using
`my' and I'd like for it to get closer to that goal.

There is a lot of declaring in main that should be more localized.  So
I'm looking for pointers about how to correct it.

I've declared `my %data;' in main because the uniqifyer code inside
`wanted()' fails if declared inside `wanted()' and a directory path
for each file found gets collected so repeated collection of same path
occurs.  How do I get around that?

I've declared [EMAIL PROTECTED]' in main because I want to use it in
`report()'. 

So trying to keep this as simple as I can, the code runs something
along this line:

  #!/usr/bin/perl -w
  use strict;
  use warnings;
  use File::Find;

[...] too many lines of code, including a getopts section, setting up
      search parameters, tests etc. go here

  my $SrchTree = shift;
  find(\&wanted, $SrchTree);
  
  my (%data, @SearchedDir);
  sub wanted {
    ## Collect only uniq paths
    if ($data{$File::Find::dir}++ == 0) {
       ## Make an array of all (Unique) directories searched
       push @SearchedDir, $File::Find::dir  . "\n"; 
    }

[...] Too many more lines of processing that gather the lines
      matching regex and the matching filename (printed as we go)
      go here.
  }
  # Now print a summary
  print report();
  
(Note: All vars but `ShowStr' below, were declared in main so
they could be used here)
  
  sub report {
    ## Return how many hits.. how many files searched, where
    ## and the regex used.
    my $ShowStr = "=============================================
     <$HitCnt> hits found in <$GlobalCnt> files
     Using directorie[s]: 
   @SearchedDir
     Regex used: <$ShowInFileRe>
     Filename filter: <$FnameFilter>
  =============================================\n";
    return $ShowStr;
  } 



-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
http://learn.perl.org/


Reply via email to