Version 3 of Commonly encountered problems in Tcl

Updated 2003-04-07 18:25:13

Purpose: to discuss various common Tcl problems as well as their solutions/workarounds/rationalizations.


One marvelous source of information on this topic is Cameron Laird's Frequently Made Mistakes(tm) document at http://www.phaseit.net/claird/comp.lang.tcl/fmm.html

Use this page for additional problems, alternative solutions, etc.


Recently David Cuthbert mailto:[email protected] stated [L1 ] that recently several students have been learning Tcl and he has found that "[t]he biggest stumbling points have been

1. Scoping, which is backwards from C:

    int i = 0;                      set i 0

    void f() {                      proc f {} {
        i = 2; /* legal */              set i 2 ;# illegal
        if(1) { int j = 0; }            if 1 { set j 0 }
        ++j; /* illegal */              incr j  ;# legal
    }                               }

(DKF: The above use of Tcl is legal but not useful; the [set] creates a new local variable called i instead of reusing the global one. Of course, an initial command that reads from the variable will fail...)

2. upvar, and the use of variable names as pointers.

3. Reducing the use of exec vs. built-in Tcl functions. (They tend to revert to things they know, as anyone would expect.)


Category Debugging