http://www.purl.org/tcl/home/man/tcl8.4/TclCmd/subst.htm ---- What's the '''use''' of subst? As [Joe English], who has deep experience in the area, explains, "[[subst]] is massively handy in text-processing applications, especially [SGML] and [XML] down-translators. [[subst]] and [[ [string] map]] make Tcl particularly well-suited for this type of task." Many jobs for which [Perl] uses "right-hand-side" variables with [regular expression] substitution, Tcl does as REs whose results are subst-ituted. ---- Very simple example of using [[subst]] with XML/HTML. set html {$title} set title "Hello, World!" set output [subst -nocommands $html] set output Hello, World! Another alternative would be to use [XPath] I use something like this in an application of mine. Of course the "text" of the 'html' variable above would probably come from a file. I would much rather use [XPath] to hunt down the place to change. ---- [RS] most often uses [subst] for expanding Unicodes: cross-platform, in mostly 8-bit environments, it is most robust to output Unicodes in the \u.... notation - such snippets can be pasted into a text widget and visualized by subst [$t get 1.0 end] ---- [[Explain the [regsub] [idiom].]] ---- 03jun04 [jcw] - It would be useful to extend subst so it lets one catch variable accesses, and perhaps even command executions. What I mean is that when you subst text with "... $var ..." then sometimes it is useful to be able to intercept the expansion, by turning it into a call such as "myhandler var" for example, the result of which then gets used as substitution. The same (perhaps less important) might apply to "... [[cmd ...]] ..." expansions. This makes it simpler to implement tiny languages which also use `$var` and `$var(item)` as This makes it simpler to implement tiny languages which also use "$var" and "$var(item)" as Would it be an idea to extend subst so it optionally passes each of its substitutions to a command? Would it be an idea to extens subst so it optionally passes each of its substitutions to a command? '''[DGP]''' Am I missing something? Aren't you asking for variable and command [trace]s? Which exist? for variable and command traces? Which exist? D'oh! I'm missing that in this case you want to set a trace on a whole set of variables/commands whose names you do not know. OK, something to think about... Anyhow, I think that's the right way to address the issue generally... add more types of traces that can be used everywhere. I'd be shy about diverging the implementation of `subst` from the implementation diverging the implementation of [subst] from the implementation [jcw]: Yes, that's exactly the scenario. `subst` on a string to expand names which are not known up front. Looks like there is no way to catch this right now. [jcw] - Yes, that's exactly the scenario. Subst on a string to expand names which are not known up front. Looks like there is no way to catch this right now. The key is to intercept between the parse for var/cmd expansions and the lookup for existing ones. ---- [Tcl syntax help] - [Arts and crafts of Tcl-Tk programming] - [Category Command] - [Category String Processing]