Do you mean:

my ($c,@compiled) = ();
for(@accept) {
  $compiled[$c++] = qr/$_/;
}


? then you can loop over @compiled instead of @accept, and it should be
quite a bit faster. It sounds like that's what you're looking for. There
is a big section on compiling regular expressions in O'Reilly
Programming Perl, 3rd edition, if you have that available.

 -dave

> -----Original Message-----
> From: Nikola Janceski [mailto:[EMAIL PROTECTED]] 
> Sent: Thursday, March 21, 2002 1:50 PM
> To: Beginners (E-mail)
> Subject: precompile regular expressions?
> 
> 
> Is there a way to precompile regular expressions?
> 
> I have an array of acceptable matches, and an array of items 
> to grep from. I want to avoid recompiling the regular 
> expression over and over again, for each loop.
> 
> ie. (imagine these lists are much longer).
> 
> @stuff = (
>       "Micheal",
>       "Marko",
>       "Marcy",
>       "Rebecca",
>       "Bob",
>       "Jancy",
>       "Jill",
>       "Jamie",
>       "Jack",
>       );
> @accept = qw( Ja Ma );
> 
> my @goodstuff;
> foreach my $item (@stuff){
>       foreach my $accept (@accept){
>               push @goodstuff, $accept if $item =~ /$accept/; 
>  ## my problem is this might take long recompiling each time
>               }
>       }
> 
> print "@goodstuff\n";
> 
> __END__
> 
> # alternative is:
> foreach my $accept (@accept){
>       push @goodstuff, grep /$accept/, @stuff;
>       }
> # but this isn't better because in my script @accept is much 
> bigger/longer than @stuff
> 
> 
> Nikola Janceski
> 
> Here it is my time, 
> Where there are no crimes, 
> Only I exist here, 
> And have no fear.
> -- Riddles
> 
> 
> --------------------------------------------------------------
> --------------
> --------------------
> The views and opinions expressed in this email message are 
> the sender's own, and do not necessarily represent the views 
> and opinions of Summit Systems Inc.
> 
> 
> -- 
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
> 
> 



-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to