in reply to Golf: Count unique words

So, given a list of filenames as input, you want to
  1. read them in
  2. find all the words (as determined by /\b\w+\b/ ... there are other ways)
  3. print out of all the unique words and how often they appeared
  4. print out how many words there were total

Right? Ok ... I come in at 81 characters. 78 for the code and 3 for the switches.

#!perl -nl END{print"$_ ($w{$_})"for sort keys%w;print"\n$t"}s/\b(\w+)\b/$w{$1}++ +;$t++/eg

It's basically a rewrite of your code, with a few enhancements.

Being right, does not endow the right to be rude; politeness costs nothing.
Being unknowing, is not the same as being stupid.
Expressing a contrary opinion, whether to the individual or the group, is more often a sign of deeper thought than of cantankerous belligerence.
Do not mistake your goals as the only goals; your opinion as the only opinion; your confidence as correctness. Saying you know better is not the same as explaining you know better.

Replies are listed 'Best First'.
Re^2: Golf: Count unique words
by Fletch (Bishop) on Nov 30, 2004 at 15:24 UTC

    73 (70 + 3 for the switches). The \b's are pretty much unnecessary and using $& means you don't need parens.

    #!/usr/bin/perl -nl END{print map("$_ ($w{$_})\n",sort keys%w),$t}s/\w+/$w{$&}++;$t++/eg;

      Sh?aving seven strokes:

      #!/usr/bin/perl -lp ++$t,++$w{$_}for/\w+/g}for(map("$_ ($w{$_})",sort keys%w),$t){