implement it in elegant way

Posted on 1998-08-17
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){
  $open(FILE,$f)|| die "cannot open";

  while (<FILE>){
     if ($_ eq /pattern_a/){
     }elsif($_ eq /pattern_b){
     }elsif($_ eq /pattern_c){
     }elsif   ....

     }elsif($_ eq /pattern_z){


  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){
          $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.
Question by:tian
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 2
LVL 84

Expert Comment

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


Accepted Solution

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);

LVL 84

Expert Comment

ID: 1203805
## or append filename to $pattern{$_},

Featured Post

Independent Software Vendors: We Want Your Opinion

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

Question has a verified solution.

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

A year or so back I was asked to have a play with MongoDB; within half an hour I had downloaded (,  installed and started the daemon, and had a console window open. After an hour or two of playing at the command …
In the distant past (last year) I hacked together a little toy that would allow a couple of Manager types to query, preview, and extract data from a number of MongoDB instances, to their tool of choice: Excel (…
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…
Six Sigma Control Plans

695 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