Thanks for sharing this. My preference is to do it all in Tcl without having to shell out, which is possible (and easy!) to do in most other languages.
Think of it like learning functional programming. You have to "embrace the paradigm" instead of just mutating things all the time like you might be used to in an imperative language.