This still returns only one match per $term. I still don't understand how to "rewind" the file. @before and @after just put text around the matches, kinda like a search engine format.sub findtext { @filenumbers = @_; foreach $number(@filenumbers) { push @filenumbers2, split(/\W/, $number); } foreach $number(@filenumbers2) { chomp $number; if( defined $number ) { open(FILE,"/home/jroberts/$number.txt") or die "$!"; while(<FILE>) { for $term(@inputs) { next unless (/\b($term)\b/i); push @before, split(' ', $`); @before = reverse(@before); @before = splice(@before, 0, 7); @before = reverse(@before); push @after, split(' ', $'); @after = splice(@after, 0, 7); if(exists $results{$number}) { $existing = $results{$number}; $results{$number} = $existing . "... @before" . "<b>$1</b> +" . "@after ..."; } else { $results{$number} = "$url... @before" . "<b>$1</b>" . "@af +ter "; } @before = undef; @after = undef; next; } } close(FILE); print "Match found in $number.txt\n"; @fulltext = $results{$number}; print "@fulltext\n"; } else { next; } next; } }
In reply to Re: Pattern Matching With Regular Expressions
by Anonymous Monk
in thread Pattern Matching With Regular Expressions
by Anonymous Monk
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |