Hmm. Let's set the ball rolling... ---- A simple way to get a read-only global variable is to use a suitable trace: set ROglobal someValue trace variable ROglobal w "[list set ::ROglobal $ROglobal];error read-only;#" Notice the time- and hair-saving tricks: 1. Using [[list]] to construct a ''guaranteed'' safe command for later execution. 1. Using colon notation to force a reference to a global variable, whatever the context. 1. Inserting the global name of the variable in the trace command, instead of working with its local referent. 1. Using a trailing ";#" to trim the undesirable extra arguments from the trace command. '''DKF''' ---- Neat... I remember having had trouble when the trace was set on '''::var''', yet usage was based on '''global var''', or the other way around. Does anyone know what the exact behavior is when mixing these two approaches? -- JC