NAME
       set - Read and write variables

SYNOPSIS
       set varName ?value?


DESCRIPTION
       Returns the value of variable varName.  If value is specified, then set
       the value of varName to value, creating a new variable if  one  doesn't
       already  exist,  and  return  its  value.   If varName contains an open
       parenthesis and ends with a close parenthesis, then  it  refers  to  an
       array  element:   the  characters before the first open parenthesis are
       the name of the array, and the characters between the  parentheses  are
       the index within the array.  Otherwise varName refers to a scalar vari-
       able.

       If varName includes namespace qualifiers  (in  the  array  name  if  it
       refers  to  an  array  element), or if varName is unqualified (does not
       include the names of any containing namespaces)  but  no  procedure  is
       active,  varName  refers  to a namespace variable resolved according to
       the rules described under NAME RESOLUTION in the namespace manual page.

       If  a  procedure  is  active  and  varName is unqualified, then varName
       refers to a parameter or local variable of the procedure,  unless  var-
       Name  was  declared  to  resolve differently through one of the global,
       variable or upvar commands.

EXAMPLES
       Store a random number in the variable r:
              set r [expr rand()]

       Store a short message in an array element:
              set anAry(msg) "Hello, World!"

       Store a short message in an array element specified by a variable:
              set elemName "msg"
              set anAry($elemName) "Hello, World!"

       Copy a value into the variable out from a variable whose name is stored
       in  the  vbl  (note  that  it is often easier to use arrays in practice
       instead of doing double-dereferencing):
              set in0 "small random"
              set in1 "large random"
              set vbl in[expr {rand() >= 0.5}]
              set out [set $vbl]


SEE ALSO
       expr(n),  global(n),   namespace(n),   proc(n),   trace(n),   unset(n),
       upvar(n), variable(n)


KEYWORDS
