Posted to tcl by stevel at Fri Sep 04 03:56:38 GMT 2009view pretty

proc ReadCmd {v1 v2 op} {
        upvar 1 $v1 v
        if {![info exists v($v2)]} {
            after 5000 set ::$v2 1
            vwait ::$v2
            set v($v2) $v2
        }
    }

    proc WriteCmd {v1 v2 op} {
        upvar 1 $v1 v
        puts "${v1}($v2) set to $v($v2)"
    }

    array set foo {}
    trace add variable foo read ReadCmd
    trace add variable foo write WriteCmd    
       
    puts "initial values = [array get foo]"
    after 2000 set foo(new) 10
    puts "foo(bar) = $foo(bar)"
    puts "foo(bing) = $foo(bing)"
    puts "final values = [array get foo]"