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 access mechanisms, but to things which are not necessarily stored in Tcl variables/arrays. 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? Could be a "-command ..." option, or simply the presence of more args. '''[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. ---- [Tcl syntax help] - [Arts and crafts of Tcl-Tk programming] - [Category Command]