use strict; use warnings; use List::Util qw/max/; my ( %words, %count ); my $file = $ARGV[0]; while (<>) { $words{ lc $_ }++ for split /\W+/; } push @{ $count{ $words{$_} } }, $_ for keys %words; my $max = max keys %count; print "The most frequent word(s) in $file: @{ $count{$max} }; Times seen: $max.\n"