#!/usr/local/bin/tclsh
# $Id: wordfreq.tcl,v 1.11 2001/05/17 00:49:34 doug Exp $
# http://www.bagley.org/~doug/shootout/
# with help from: Tom Wilkason and Branko Vesligaj
proc main {} {
while {1} {
set data [read stdin 4096]
if {[string equal $data {}]} {break}
if {[gets stdin extra] >= 0} {
append data $extra
}
regsub -all {[^[:alpha:]]+} $data { } line
foreach word [string tolower $line] {
if {[catch {incr count($word)}]} {
set count($word) 1
}
}
}
foreach {word cnt} [array get count] {
lappend lines [format "%7d\t%s" $cnt $word]
}
puts [join [lsort -decreasing $lines] "\n"]
}
main