En la introducción ya se explicó como crear variables en tcl, aquí nada mas se recordará de forma general:

Creación de una variable

Para crear una variable se utiliza el comando:

  set var cont 
Donde var es el nombre de la variable que se creará y cont es el valor que será asignado a dicha variable.

Si se desea ver lo que contiene se teclea:

  set var 
Esto funciona unicamente cuando se trabaja directamente en el prompt del tclsh. Para ver su contenido en pantalla durante la ejecución de un archivo de comandos de tcl se puede utilizar el comando:

   puts stdout $var 

Eliminación de una variable

Para eliminar la variable se utiliza el comando:

  unset var 
La confirmación de la existencia de una variable se realiza mediante el comando info, de la siguiente forma:

  info exist var 
En caso de existir la variable este comando devolverá el valor 1, en caso contrario devolverá 0.

Asignación de un valor desde teclado a una variable

Es posible asignar un valor a una variable desde el teclado, para eso se utiliza el mismo comando set, pero de la siguiente forma:

  set variable [gets stdin] 
Lo que hace el comando gets es obtener información desde algún dispositivo, en este caso desde la entrada estandar que es el teclado (stdin). Cuando se llegue a esta linea la ejecución del programa se detendrá hasta que el usuario teclee un retorno de carro o "ENTER"

Listas:

Las listas en Tcl son estructuras de datos formadas por cadenas separadas cada una de ellas por espacios sencillos, se permite el uso de las llaves para utilizar un grupo de palabras con espacios intermedios como un solo elemento de una lista.

Creación de una lista

Para crear una lista se hace de la siguiente forma:

 list par1 par2 par3 ... 
Es posible asociarla a alguna variable:

  set varl [list par1 par2 par3] 
Los comandos siguientes son especificamente para trabajar con listas:

lindex $varl n

Regresa el elemento n de la lista almacenada en la variable varl. Ejemplo:

#!/usr/local/bin/tclsh7.4
  set lista1 [list rojo amarillo verde azul]
  puts stdout "Elemento numero 3 de la lista"
  puts stdout [lindex $lista1 2]

llength $varl

Regresa el número de elementos que contenga la lista almacenada en la variable varl. Ejemplo:

#!/usr/local/bin/tclsh7.4
  set lista1 [list rojo amarillo verde azul]
  puts stdout "Numero de elementos en la lista"
  puts stdout [llength $lista1]

lrange $varl n m

Regresa los elementos de la lista contenida en varl, desde el elemento n hasta el m. Ejemplo:

#!/usr/local/bin/tclsh7.4
  set lista1 [list rojo amarillo verde azul blanco rosa]
  puts stdout "\n * Elementos entre las posiciones 3 y 5"
  puts stdout [lrange $lista1 2 4]

lappend varl par1 par2 par3 ...

Agrega los elementos par1, par2, par3, etc. al final de la lista almacenada en varl. Ejemplo:

#!/usr/local/bin/tclsh7.4
  set lista1 [list rojo amarillo verde azul blanco rosa]
  puts stdout "\n * Agregando los elementos morado y magenta"
  lappend lista1 morado magenta
  puts stdout $lista1

linsert $varl n par1 par2 ...

Inserta los elementos par1, par2, etc. en la lista almacenada en varl, en la posición anterior al elemento n de la misma. Regresa una lista nueva. Ejemplo:

#!/usr/local/bin/tclsh7.4
  set lista1 [list rojo amarillo verde azul blanco rosa]
  puts stdout "\n * Insertando el elemento cafe en la posicion 2:"
  set lista1 [linsert $lista1 2 cafe]
  puts stdout $lista1

lreplace varl n m par1 par2 par3 ...

Reemplaza los elementos de la lista contenida en varl comprendidos entre el elemento número n y el m por los elementos dados como parámetros: par1, par2, par3, etc. Regresa una lista nueva. Ejemplo:

#!/usr/local/bin/tclsh7.4
  set lista1 [list rojo amarillo verde azul blanco rosa]
  puts stdout "\n * Remplazar los elementos verde y azul por adios"
  puts stdout [lreplace $lista1 3 4 adios]

lsearch varl expr

Busca un elemento igual a expr dentro de la lista contenida en varl, regresa el número del elemento, en caso de no encontrarlo regresa -1. Ejemplo:

#!/usr/local/bin/tclsh7.4
  set lista1 [list lunes martes miercoles jueves viernes]
  puts stdout "* Posicion del elemento \"jueves\""
  puts stdout [lsearch $lista1 jueves]

lsort modo varl

Ordena los elementos de la lista de acuerdo a los modos:

-ascii (Orden alfabético)
-integer
-real
-increasing
-decreasing
-command

Regresa una lista nueva. Ejemplo:

#!/usr/local/bin/tclsh7.4
  set lista1 [list lunes martes miercoles jueves viernes]
  puts stdout "* Lista con ordenacion ascii"
  puts stdout [lsort -ascii $lista1]
  puts stdout "* Lista con ordenacion decreciente"
  puts stdout [lsort -decreasing $lista1]

concat par1 par2 par3 ...

Une varias listas regresando como resultado una lista nueva.

Arreglos

Un arreglo (array) es un conjunto de cadenas ordenadas. El acceso a cada uno de sus elementos se realiza por medio de un índice.

El índice en el arreglo se delimita por medio de paréntesis. Los índices pueden contener cualquier valor y pueden ser producto de una sustitución de comandos. El contenido de cada elemento de un arreglo se define con el comando set, por ejemplo:

  set arreglo(1) uno 
No es necesario declarar nada para utilizar un arreglo, simplemente se introduce el primer valor y automaticamente quedará creado.

Para obtener el valor almacenado en el arreglo se utiliza la sustitución con el símbolo $.

  set variable $arreglo(1) 
Ejemplo:

#!/usr/local/bin/tclsh7.4
  puts stdout "Teclea lineas sencillas de texto, para terminar \
    teclea fin y enter"
  set i 1
  set arreglo(0) ""
  while {$arreglo([expr $i-1]) != "fin"} {
    set arreglo($i) [gets stdin]
    incr i
  }
  for {set x 1} {$x < $i} {incr x 1} {
    puts stdout $arreglo($x)
  }