Beefy Boxes and Bandwidth Generously Provided by pair Networks
P is for Practical
 
PerlMonks  

Re: Find most frequently used word in text file.

by roboticus (Chancellor)
on Dec 19, 2013 at 19:44 UTC ( #1067874=note: print w/ replies, xml ) Need Help??


in reply to Find most frequently used word in text file.

jonesd14:

The first half is pretty good. There are a few quibbles, but nothing bad. For the second half, though, you're doing *far* too much work to get the best key/value from the hash. I'dd suggest something more like this:

my ($bestVal, $bestKey) = (-1); foreach my $key (@keys) { if ($hash{$key} > $bestVal) { ($bestVal, $bestKey) = ($hash{$key}, $key); } } print "The most frequent word in $ARGV[0] is $bestKey, which was seen +$bestVal times.\n";

Now on to a few of the quibbles:

  • Your variable names are good except one two: %hash and @arrays.
  • chomp $word; is unnecessary, since you just split the string up at non-word characters. Similarly, the regex substitution to remove whitespace is redundant.
  • If your file is big, you may run out of memory because you're reading the entire file at once. You might try:
    while (my $line = <FILE>) {
    This has the additional advantage of removing the need for the @arrays variable.

I didn't see any real problems, just unnecessary work. Nice work!

Update: Updated first quibble.

...roboticus

When your only tool is a hammer, all problems look like your thumb.

k


Comment on Re: Find most frequently used word in text file.
Select or Download Code

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://1067874]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others pondering the Monastery: (10)
As of 2015-07-04 14:14 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    The top three priorities of my open tasks are (in descending order of likelihood to be worked on) ...









    Results (60 votes), past polls