Purpose: discuss what all is known about Tcl variable names - what are the limits, tricks, and tips? ---- [LV]: I've seen people show examples of Tcl variable names from 0 characters long to quite long (more than 30 I believe). The names can contain spaces and many other special characters. I would, myself, avoid the use of metacharacters such as [[ ]] , ( ) $ : { } and probably a few others, just to save myself the quoting nightmare that one might encounter. I also believe that some extensions impose additional 'restrictions' - for instance, I believe that Tk generally expects widget names to begin with a period and not to use an upper case alpha as the first character. [RS]: As far as I'm aware, a variable name may be any string, from the empty string up. (Well, sequences of colons (two ro more :) have special meaning, so they cannot be arbitrarily thrown in). The $ parser restricts variable names to [[A-Za-z0-9_]], so it's wise to stay in that range (otherwise you might have to brace (which prevents Unicode expansion... or use [[[set] \u20AC]] if you have a variable name with the Euro sign. [Rolf Ade]: I can do 'set � foo; puts $�' (this � is adiaresis, if you only see a strange char). What do you mean with "The $ parser restricts variable names to [[A-Za-z0-9_]]? [RS]: I've heard there was a bug report so "national" letters would also be allowed by the $ parser... so it seems this has been fixed. Which version? [RS]: In 8.2.3, "�" is not taken by the $ parser. [Rolf Ade]:8.3.2 [KBK]: The bug is still open as of 17 January 2002: [https://sourceforge.net/tracker/?func=detail&aid=408568&group_id=10894&atid=110894]. Once it's fixed, there oughtn't to be anything wrong with a variable substitution like $h�t�rog�n�it�. (Heterogeneity of the languages accepted would be a good thing...) (Just checked: it depends on the native isalnum() call, but certainly you can't name a variable \u03b3 and accept the $-parser to take it, even when eval'ing a Unicode string.)