in reply to Search String - next line
If you expect the match to occur multiple times then you should loop using a while (m! !sg) expression as inopen (FILE '<filename'); $_ = join('',<FILE>); close (<FILE>); my ($result) = m!$match(?:.*?$/){$Nth}(.*?$/)!s; print $result;
In the looping case there is some ambiguity about what should happen in the event that $match also occurs in the lines that are skipped. In the code as written above we ignore any such possible matches. Careful manipulation of pos in the loop however does allow all $Nth lines after $match to be found - this is the line commented out in the above. Changing it so as to ensure that none of the skipped lines contains $match is left as an exercise for the student...open (FILE '<filename'); $_ = join('',<FILE>); while ( m!$match(?:.*?$/){$Nth}(.*?$/)!sg) { print $1; # pos = length ($match) + length ($`); }
Dingus
|
|---|