Posted to tcl by patthoyts at Sat Dec 09 19:18:56 GMT 2006view pretty
proc InitNickState {nick level somethingelse} { variable uid set State [namespace current]::nick[incr uid] upvar #0 $State state set state(nick) $nick set state(level) $level set state(somethingelse) $somethingelse return $State } Then to use it: proc CheckLevel {nick} { foreach State [info vars [namespace current]::nick*] { if {[set [set $State](nick)] eq $nick} { return [set [set $State](level)] } return -code error "nick not found" } or if you keep the State array id you can use proc Level {State) { upvar #0 $State state return $state(nick) }