Solved

implement it in elegant way

Posted on 1998-08-17
3
185 Views
Last Modified: 2011-09-20
Suppose I want to scan a set of files and see if each of them contains certain patterns
26 patterns altogether).
Finally print the all name of files containing pattern_a,all name of file containing file_b etc...

My stupid program is like:

.......

foreach $f (@files){
  $name=$f;
  $open(FILE,$f)|| die "cannot open";

  while (<FILE>){
     if ($_ eq /pattern_a/){
       push(@list_a,$name);
     }elsif($_ eq /pattern_b){
       push(@list_b,$name);
     }elsif($_ eq /pattern_c){
       push(@list_c,$name);
     }elsif   ....
            .....

     }elsif($_ eq /pattern_z){
       push(@list_z,$name);
     }

  }
}

  printf "files containing pattern_a: @list_a\n";
  printf "files containing pattern_b: @list_b\n";
   ......
   ......
  printf "files containing pattern_z: @list_z\n";

-----------------------------------------------------------
However, I would like to implement it like
   
         ........
       foreach $f (@files){
          $name=$f;
          $open(FILE,$f)|| die "cannot open";

          while (<FILE>){
            if (exists $pattern{$_}{
                push(@list($_),$name)  ## This is illegal!!!
            }      ## or append filename to $pattern{$_},                     ###but how to do it
         }
       }
          ........

Can anyone there enlighten me or provide more elegant code? Thank you in advance.
0
Comment
Question by:tian
  • 2
3 Comments
 
LVL 84

Expert Comment

by:ozo
ID: 1203803
push @{$list{$_}},$name;

0
 
LVL 5

Accepted Solution

by:
b2pi earned 100 total points
ID: 1203804
Essentially, you want @list to be a list of lists, yes?  The following may work for you...


push(@$list{$_}, $name);

Alternatively, if you want to add the list of files containing a pattern to %patterns, you could do

push(@{$patterns{$_}}, $f);

0
 
LVL 84

Expert Comment

by:ozo
ID: 1203805
## or append filename to $pattern{$_},
$pattern{$_}.=$f;
0

Featured Post

Best Practices: Disaster Recovery Testing

Besides backup, any IT division should have a disaster recovery plan. You will find a few tips below relating to the development of such a plan and to what issues one should pay special attention in the course of backup planning.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

I have been pestered over the years to produce and distribute regular data extracts, and often the request have explicitly requested the data be emailed as an Excel attachement; specifically Excel, as it appears: CSV files confuse (no Red or Green h…
A year or so back I was asked to have a play with MongoDB; within half an hour I had downloaded (http://www.mongodb.org/downloads),  installed and started the daemon, and had a console window open. After an hour or two of playing at the command …
Explain concepts important to validation of email addresses with regular expressions. Applies to most languages/tools that uses regular expressions. Consider email address RFCs: Look at HTML5 form input element (with type=email) regex pattern: T…
Nobody understands Phishing better than an anti-spam company. That’s why we are providing Phishing Awareness Training to our customers. According to a report by Verizon, only 3% of targeted users report malicious emails to management. With compan…

778 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question