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. ''[RS]: Well, if that isn't the most straightforward implementation of "call by name"...'' 3. Reducing the use of exec vs. built-in Tcl functions. (They tend to revert to things they know, as anyone would expect.) ''[RS]: Just make it a habit to test the same script on [Unix] and [Windows]...'' ---- See also: * [Some common mistakes when programming in Tcl/Tk] * [Why can I not place unmatched braces in Tcl comments] * [Quoting hell] ---- [Category Debugging]