Tcl(发音tickle)是一种脚本语言。由John Ousterhout(英语:John Ousterhout)创建。TCL经常被用于快速原型开发 RAD、脚本编程、GUI编程和测试等方面。
Tcl 的特性包括:
旧版 Tcl 没有内置面向对象功能,因此许多 OO 库以扩展形式涌现出来,如 incr Tcl 和 XOTcl,甚至存在纯脚本编写的 OO 包,如 Snit 和 STOOOP(simple Tcl-only object-oriented programming),8.6 版本在内核中提供了 OO 功能页面存档备份,存于互联网档案馆。
Safe-Tcl 是功能受限的 Tcl 子集。文件系统访问受限,任意系统命令禁止执行。它使用双解释器模型,在“不可信解释器”中运行不可信脚本中的代码。由 Nathaniel Borenstein 和 Marshall Rose 设计,借以在电子邮件中包含活动信息,当支持 与 时,Safe-Tcl 即可包含于电子邮件中。Safe-Tcl 功能已集成在标准 Tcl/Tk 发布中。
Tcl 支持扩展包,这些扩展包提供了附加功能(像是GUI,终端程序自动化,数据库访问等)。常用的扩展包有:
下面是TCL程序的例子:
#!/bin/sh# next line restarts using tclsh in path \exec tclsh $0 ${1+"$@"}# echo server that can handle multiple# simultaneous connections.proc newConnection { sock addr port } { # client connections will be handled in # line-buffered, non-blocking mode fconfigure $sock -blocking no -buffering line # call handleData when socket is readable fileevent $sock readable }proc handleData { sock } { puts $sock if { } { close $sock }}# handle all connections to port given# as argument when server was invoked# by calling newConnectionset port socket -server newConnection $port# enter the event loop by waiting# on a dummy variable that is otherwise# unused.vwait forever