http://www.perlmonks.org?node_id=961493

perl.j has asked for the wisdom of the Perl Monks concerning the following question:

So I have this text file:

Bob Joe Steve Joe Bob Mark Joe Steve Fred Fred Fred Joe

And I am reading and counting the names with this program:

use 5.12.4; use strict; use warnings; my %wordcount; open(FILE, "names.txt") or die "Could not open file: $!"; while(my $line = <FILE>) { chomp($line); my @words = split(' ', $line); foreach my $word(@words) { $wordcount{$word} += 1; } } sub hashDescend { $wordcount{$b} <=> $wordcount{$a}; } foreach my $key (sort hashDescend (keys(%wordcount)) { print "Word: $key \t\t\t\t\t\t Count: " . ($wordcount{$key}) . "\n +"; }

But now I want to change it up. I am going to be running this program in a huge repeating loop, so speed counts. So I want to make this faster.

I was thinking about making one big @globalarray and a @temparray and pushing from the @temparray into the global one. I am thinking this will make it a very tiny bit faster, but anything will do at this point. So how can I change my program as described, but still have the same output?

--perl.j