proc processLine {arrayName line} { global State upvar $arrayName count set cmd [lindex $line 4] set cmdList [split $cmd {][}] lassign $cmdList name pid if {$pid eq ""} { incr count($name) } elseif {[lsearch $State(pidList,$name) $pid] < 0} { incr count($name) lappend State(pidList,$name) $pid } } set if [open "messages.1" r] set data [read $if] close $if array set State {pidList,sshd {} pidList,named {} pidList,ntpd {}} foreach line [split $data \n] { processLine count $line } parray count