On Wed, Jan 09, 2002 at 05:26:41PM +0000, beginners wrote:
 1>$/=undef; # slurp mode
 2> 
 3>for (@array_of_files) {
 4> 
 5>     my @wordfound =();
 6> 
 7>     print"***Error : Cannot find file $_\n" unless -r && -w;
 8> 
 9>     open(FILE, $_) or die "$_:$!\n";
10>     my $file_contents =<FILE>; # get all the file
11> 
12>     @wordcount = ($file_contents =~/^\b($word)\b/g);
13>     close (FILE);
14> 
15>     print"Word found $#wordfound times in file $_\n";
16>}
---end quoted text---

Ack, I forgot to explain that :(

1. unsets the record seperator variable (usually "\n") so there's no
need to loop for each line, smart for small files / dumb for really big
files.

3. Removing the While loop means I can still use $_, although Japhy is
right in what he says.

5. The array I use is locally scoped so is flushed every loop, I
initialise it to stop complaints if using -w.

12. using () in a regex puts the values in $1-$9 and returns each item
matched to an array (@wordcount).

15. $#wordcount returns the number of the last index in the array not
the number of elements ( so 4 elements $#wordcount = 3 IIRC ) so that
needs a check like defined $wordcount[0] to check that there is at least
one match.

It's just another way, it's not better for all instances.

-- 
 Frank Booth - Consultant
Parasol Solutions Limited.
(www.parasolsolutions.com)

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

Reply via email to