● Introducción
● Estructura de un programa de TCL
● Variables
● Manipulación de strings
● Listas y Arrays
● Aritmética
● Estructuras de control
● Entrada/Salida
● Introducción a la programación Web con el AOLServer
Pedro J. Muñoz Merino
Diseño de Aplicaciones Telemáticas
2
Estructura de un programa TCL
● Un conjunto de invocaciones a comandos. Cada línea es
una invocación. Para definir nuevos comandos que
puedan ser invocados se realiza con proc
― El comando puede retornar algún valor con la palabra reservado
return
― Si no hay un return, entonces se devuelve lo que retorne el
― Si no hay un return, entonces se devuelve lo que retorne el
último comando ejecutado
― Los parámetros de un comando pueden ser lo que retornan otros
comandos. Este tipo de invocaciones deben ir entre [ ]
proc nombre_comando {param1 param2 … paramn}
{
comandos_de_TCL
return var
}
Pedro J. Muñoz Merino
Diseño de Aplicaciones Telemáticas
3
Variables
● Definición de variables y establecimiento de valor
― set nombre_var valor
● Recuperación de valores de variables
― set nombre_var
― $nombre_var
Pedro J. Muñoz Merino
Diseño de Aplicaciones Telemáticas
4
Caracteres que se escapan
● Hay ciertos caracteres que no se interpretan literalmente
dentro de un string, como por ejemplo
― $ que significa el valor de una variable
― [ ] que significa la ejecución de un determinado comando
● Para interpretarlos literalmente hay que poner delante el
carácter \
carácter \
● Un string puede ir
― Sin comillas. En cuanto hay un espacio en blanco se interpreta
como un parámetro de un comando
― Con comillas dobles. El espacio en blanco se interpreta tal cual
Pedro J. Muñoz Merino
Diseño de Aplicaciones Telemáticas
5
Ámbito de las variables
● Local a un procedimiento. Este es el ámbito por defecto
● Globales a un Thread. Se declaran con la palabra
reservada global. Y en cada procedimiento que se utilice
hay que poner dicha palabra reservada
● Globales a todos los Threads. Se declaran con la palabra
reservada ns_share (Esto es algo del servidor
reservada ns_share (Esto es algo del servidor
AOLServer)
subMatchVar ...?
Se testea si la expresión hace match con el string pasado y luego se
Se testea si la expresión hace match con el string pasado y luego se
devuelven diferentes strings según el match realizado
result_variable_name
Se testea si la expresión hace match con el string pasado y en tal caso se
procede a realizar la sustitución oportuna
Pedro J. Muñoz Merino
Diseño de Aplicaciones Telemáticas
7
Operaciones con Strings (II)
● Operadores empiezan por string
― string compare string1 string2
― string first string1 string2
― string last string1 string2
― string match pattern string
― string range string i j
― string tolower string
― string toupper string
― string trim string ?chars?
― string trimleft string ?chars?
― string trimright string ?chars?
― string wordend string index
Pedro J. Muñoz Merino
Diseño de Aplicaciones Telemáticas
8
Operaciones con Strings (III)
● Forma de establecer los diferentes patrones para hacer
matching
― . Un sólo caracter que puede ser cualquiera
― * Cero o más caracteres que pueden ser cualquiera
― + Uno o más caracteres que pueden ser cualquiera
― ? Igual que *
? Igual que *
― | Actua como un OR lógico para coger un patrón u otro
― () Agrupa un subpatrón
― [] Delimita un conjunto específico de caracteres. Si va el ^
delante entonces es el conjunto inverso
― ^ Patrón sólo al principio
― $ Patrón sólo al final
Pedro J. Muñoz Merino
Diseño de Aplicaciones Telemáticas
9
Listas
● Listas: Contienen un número indefinido de elementos, que pueden
ser números, strings u otras listas.
― list par1 par2 … parn : Crea una nueva lista
― lappend nombre_lista par1 par2 ... parn: Añade elementos al final de una lista
― linsert nombre_lista index par1 par2 ... parn: Añade elementos a una lista
existente justo en la posición antes del índice especificado
― lreplace nombre_lista n1 n2 par1 par2 ... parn: Reemplaza los elementos de la
― lreplace nombre_lista n1 n2 par1 par2 ... parn: Reemplaza los elementos de la
lista en las posiciones de n1 a n2 por los parámetros especificados
― lindex nombre_lista n : Obtiene el elemento n de la lista
― lrange nombre_lista n1 n2: Obtiene elementos desde n1 a n2
― llength nombre_lista : Obtiene la longitud de la lista
― lsearch mode nombre_lista value : Busca un elemento según su valor y modo
― concat lista1 lista2... Listn : Concatena varias listas
― join nombre_lista joinString : Produce un string de los elementos de la lista
― split string splitChars : Produce una lista de un string
Pedro J. Muñoz Merino
Diseño de Aplicaciones Telemáticas
10
Arrays
● Arrays: Son tablas hash que asocian diferentes claves
con sus valores
― Nombre_array(clave)=valor : Para asignar diferentes valores a un
array dependiendo de su clave. Sirve tanto para definir una
nueva clave de array o para sobreescribir su valor
Pedro J. Muñoz Merino
Diseño de Aplicaciones Telemáticas
11
Aritmética
● Se evalua con el comando expr
● expr evalua una expresión aritmética y devuelve su valor
set i 1
i= expr i + 1 “2”
i= expr i + 1 “2”
Pedro J. Muñoz Merino
Diseño de Aplicaciones Telemáticas
12
Estructuras de Control
● if
● switch
● while
● foreach
● for
Pedro J. Muñoz Merino
Diseño de Aplicaciones Telemáticas
13
Entrada/Salida
● TCL tiene un interfaz para manipular ficheros, que
permite:
― Características del fichero, como extensión, fecha de creación, si
es ejecutable o no, etc.
― Abrir el fichero
― Leer del fichero
― Leer del fichero
― Escribir en el fichero
― Otras llamadas de manipulación de ficheros, como para
posicionar el puntero por donde se va leyendo o escribiendo
Pedro J. Muñoz Merino
Diseño de Aplicaciones Telemáticas
14
Introducción a la programación Web
de AOLServer
● AOLServer dispone de una serie de librerías para la
programación Web
― Analogía con servlets y JSPs en J2EE, sería aquí ficheros TCL y
ADP
● Suelen empezar por ns_ aquellas utilidades de
AOLServer relacionadas con la programación Web
AOLServer relacionadas con la programación Web
basada en TCL
● Las utilidades y su descripción se encuentran en:
― http://aolserver.com/docs/
Pedro J. Muñoz Merino
Diseño de Aplicaciones Telemáticas
15
Introducción a la programación Web
de AOLServer
● Algunos comandos útiles iniciales
― Recibir información de peticiones: ns_conn
― Escribir datos en la respuesta: ns_write
― Devolver petición: ns_return, ns_returnredirect
― Bases de datos: ns_db
― Realización de petición HTTP: ns_httpget
― Realización de petición HTTP: ns_httpget
― Envío de email: ns_sendmail
― Variable global compartida en múltiples hilos: ns_share
― Arrays: ns_set
― Lista de los links <A> : ns_hrefs
― Logs: ns_log
― Información sobre el servidor: ns_server
― Devuelve el tiempo del servidor: ns_time
― Codificación de caracteres: ns_urlencode
Pedro J. Muñoz Merino
Diseño de Aplicaciones Telemáticas
16
Trabajo propio del alumno asociado a
la sesión
● TCL for Web nerds, http://philip.greenspun.com/tcl/
Comentarios de: Lenguaje de programación TCL (0)
No hay comentarios