> On Monday, April 15, 2002, at 10:32  AM, Raghupathy, Ramesh . wrote:
>
>> Bob,
>>
>>    You are right about what I wanted to achieve. I was wondering, if I 
>> could
>> do it using just pattern match, without using any control structures like
>> (if, while ...),
>>

i had to use one loop. sorry.

@x=<>;          # read in whole file
chomp(@x);      # remove all newlines at end of each line
$x=join "",@x;  # collapse into a single string
while ($x=~/$word1(.*?)$word2/g)        # find text from $word1 to $word - may 
contain more $word1's within
{
        $z=$1;  # because $1 will be changed in substitution of next line
        $z=~s/.*$word1(.*?)$/$1/;               # find text from last occurence of 
$word to end of line
        push @y,$z};                            # this is the text you want
}

next you'll tell me you don't want to read the whole file in at once :)
that's when you have to do like what i offered the first time.

>> Thanks,
>> Ramesh
>>
>> -----Original Message-----
>> From: bob ackerman [mailto:[EMAIL PROTECTED]]
>> Sent: Friday, April 12, 2002 7:08 PM
>> To: [EMAIL PROTECTED]
>> Subject: Re: pattern match
>>
>>
>>
>> On Friday, April 12, 2002, at 12:58  PM, David Gray wrote:
>>
>>>> for e.g :
>>>>
>>>> (not showing the new lines..)
>>>>
>>>>
>>>> ....word1.....word1.....word1....word2....word1...word2....wor
>>>> d2....word2....
>>>> .....
>>>
>>> You're gonna want to check out (in the perldoc perlre manpage) (??{ code
>>> }), which is an example of a recursive regular expression. They have an
>>> example that matches nested parenthesis correctly.
>>>
>>> Cool stuff :)
>>>
>>>  -dave
>>>
>> but he doesn't want to do nested. as he described he wants text from 
>> word1
>> to word2 where there is no word1 or word2 in between. then he wants to go
>> on to the next pair.
>>
>> something like this:
>> $gotword1 = 0;
>> while(<>)
>> {
>>      if ($gotword1)
>>              # gather text
>>      while($gotword1 or /$word1/)
>>      {
>>              $gotword1=1;
>>              if (/$word2/ before a $word1)
>>              {
>>                       #gather last bunch of text and push it to array or
>> whatever
>>                      $gotword1=0;
>>              }
>>              else
>>                      #gather text
>>      }
>> }
>>
>> problem with this code is continuing the search from where the last 
>> search
>> ended,
>> knowing if you got $word2 before an instance of $word1,
>> and gathering the text between.
>>
>> but it's a start?
>>
>


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

Reply via email to