How would I reuse my own Tcl code

Purpose: describe the various methods available within Tcl for code reuse.

Cut/copy and paste
user maintains a series of text files containing tcl code and then just copies the text when needed.
tcl has a command called source which reads a file, treating the contents just as if they were a part of the original file.
tcl has a command called load which is used to attach a dynamically loadable object extension to the current library.
See Will Duquette's "Guide to Success with Namespaces and Packages" at .
tcl has a command called unknown which is invoked whenever the tcl interpreter is unable to determine a particular command. unknown does some processing and can provide dynamic sourcing of functions. Details go here. See Radical Language Modification for examples how to deal with the unknown.
exec is a tcl command used to invoke a stand alone command. This command can be written in any language supported by the system. Cameron Laird wrote a nice explanation of some of the common questions about exec on comp.lang.tcl a while ago - see for the article. This is one of the most common ways people set up Tcl commands to run non-Tcl commands.
tcl supports, in the open command, the ability to invoke a stand alone command, opening an input and/or output pipeline to it. It is started in a manner similar to the exec command. This is one means used to write a tk interface to 'wrap' around an existing program.
tcl of course supports the ability to write functions, which is a mechanism many languages provide for writing code once and then calling it multiple times.
the Expect extension/program is a Tcl package designed to write 'wrappers' around existing tcl or non-tcl programs. It is a method common to the exec above, but with extensions designed to make interacting with character based applications easier.

Be sure to read Concepts of Architectural Design for Tcl Applications for a great article on this topic.

I hope people stopping by this page will update the above descriptions to fill in a lot of the details (where does pkgIndex, tclIndex come in - what other options are available, etc.).