'''[namespace] eval''', evaluates a [script] in a given namespace. ** See Also ** `[namespace]`: `[eval]`: ** Synopsis ** : '''[namespace] eval''' ''namespace arg'' ?''arg ...''? ** Description ** ''arg''s are [concat%|%concatenated] together in the same fashion as `[eval]`, with with a space between each one, and the result is evaluated in the namespace called ''namespace''. ''namespace'' and any namespaces that qualify it are automatically created as necessary. Unlike `[eval]`, `namespace eval` operates at new level, such that `[uplevel] 1` accesses the level from which `[namespace eval]` was called. In spite of this, `[return]` within `[namespace eval]` script operates as if it were `[uplevel] return`, i.e., it causes the caller of `[namespace eval]` to return. It would probably be more useful if `[return]` within a `namespace eval` script behaved the way it does within `[source] ...` script, causing only `[namespace eval]` itself to return. For better performance, `namespace eval ...` is usually [bytecode%|%byte-compiled] when it is given one argument which is a literal string: ====== proc main { namespace eval [info cmdcount] { set msg {this script is eligible to be byte-compiled} return $msg } } ====== <> Command | namespace