On Aug 20, 2012, at 1:39 PM, Rajeev Prasad wrote:
> thank you. seek did the job.
>
> by the way can this be made any better?
>
> just want to find out in how many records string was found:
>
> my $count=0;
> seek $tmp_FH,0,0;
> while (<$tmp_FH>)
> {
> my $line=$_;chomp($line);
> if ($line=~m/\"$str\"/) {$count++;} #in the file $str
> string would be in quotes....
> }
Two possible efficiency improvements:
1. Since you are just searching each line for a string, you can skip the
chomp($line).
2. Searching for a fixed string might be done faster by using the index()
function rather than invoking the regular expression engine:
$count++ if index($line,"\"$str\"") != -1;
Neither of these modifications is likely to produce a significant speed-up. You
should benchmark them to see what the difference actually is to see if it is
worth it in your case. The speed bottleneck will still be reading the file from
a physical device.
If possible, you should combine searching for the string with whatever
processing you are doing on the file during the first read, and only read the
file once.
--
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]
http://learn.perl.org/