Well, yes, but he did say he was trying to shorten his script :)
I am often a chooser of elegance (subjective, of course) over efficiency.
So, to combine some efficiency with some elegance:
while($line = <F>) {
for my $hit ($line =~ /matchPattern/gi) {
$ct++;
push @files, $name;
print "PAGE ->\t$name\ndata ->";
if( $line =~ /(patternOne)/i or $line =~ /(patternTwo)/i ) {
print "\t\t$1\nMATCHED - >\t$hit\n";
}
else {
print " TEXT INFO HERE.\n";
}
}
}
The
$1 will be properly remembered -- although if a line matches both patterns is the
or a short circuit operator? You might have to switch the order to keep the behavior identical.