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:dacut@kanga.org stated [http://search.dejanews.com/msgid.xp?MID=%3C395043C0.D21A5749@kanga.org%3E&AH=1] 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]