The documentation for the [rename] command is available at http://purl.org/tcl/home/man/tcl8.3.2/TclCmd/rename.htm .
The [rename] command is most often used for wrapping commands. In other words, the programmer uses [rename] to hide another command -- so that a wrapper can be placed around the hidden command to change its behavior. Examples of this important concept abound on the Wiki; among the clearest are: DGP: Be aware that if you rename a command into another
[Discuss examples. Explain errorInfo subtleties (refer to live examples). Explain "return eval ::_$original_command \$first_argument $args" idiom.]
RS Another frequent application for rename is to remove commands, by renaming them to the empty string:
rename foo {}
DGP Be aware that if you [rename] a command into another namespace, its evaluation context will change to that namespace. HaO 2010-04-10: (discussion on CLT ): rename or delete from inside targeted proc is allowed:
% namespace eval one { variable message "I'm in one" proc test {} {variable message; return $message} } % namespace eval two {variable message "I'm in two"} % rename one::test two::test % two::test I'm in two
Tcl syntax help - Arts and crafts of Tcl-Tk programming - Category Command