>>>>> ""Ankur" == "Ankur Gupta" <[EMAIL PROTECTED]> writes:

"Ankur> Sonika Sachdeva <mailto:[EMAIL PROTECTED]> scribbled on Tuesday,
"Ankur> April 11, 2006 4:27 PM:

>> Actually I am looking for AND and OR combinations..and the number of
>> words are not fixed. 
>> ie @words is the variable and I need to have OR and AND combinations
>> of @words. to match in LINES How do I go about it? 

"Ankur> perldoc -f eval

or, instead of the dangerous code that this might result in, as in:

"Ankur> my $string = join " $condition ", map { "/$_/" } @words;

Ick ick... my eyes hurt looking at that!

You could instead keep in mind that:

        /^(?=.*foo)(?=.*bar)/

is true only when the string contains *both* foo and bar.
So, to turn a list @words into an and'ed regex, it's merely:

        my $regex = "^" . join "", map "(?=.*\Q$_\E)", @words;
        $regex = qr/$regex/; # compile it

There's your "and".  Safe for all inputs.  (Note the \Q).

-- 
Randal L. Schwartz - Stonehenge Consulting Services, Inc. - +1 503 777 0095
<merlyn@stonehenge.com> <URL:http://www.stonehenge.com/merlyn/>
Perl/Unix/security consulting, Technical writing, Comedy, etc. etc.
See PerlTraining.Stonehenge.com for onsite and open-enrollment Perl training!

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


Reply via email to