An Introduction To TCL Scripting: John Ousterhout Sun Microsystems Laboratories
An Introduction To TCL Scripting: John Ousterhout Sun Microsystems Laboratories
John Ousterhout
Sun Microsystems Laboratories
john.ousterhout@eng.sun.com
2. Built-in commands:
•Can learn individually as needed.
•Control structures are commands, not language syntax.
Tcl/Tk Tutorial Part II: Tcl Scripting December 12, 1995, slide 2
Basics
◆Tcl script =
•Sequence of commands.
•Commands separated by newlines, semi-colons.
◆Tcl command =
•One or more words separated by white space.
•First word is command name, others are arguments.
•Returns string result.
◆Examples:
–set a 22; set b 33
–set a 22
set b 33
Tcl/Tk Tutorial Part II: Tcl Scripting December 12, 1995, slide 3
Division Of Responsibility
Command
◆Chops commands into words.
Tcl Parser ◆Makes substitutions.
◆Does not interpret values of words.
Words
◆Interpretswords.
Command Procedure ◆Produces string result.
Result
Tcl/Tk Tutorial Part II: Tcl Scripting December 12, 1995, slide 4
Arguments
Tcl/Tk Tutorial Part II: Tcl Scripting December 12, 1995, slide 5
Variable Substitution
◆Syntax: $varName
◆Variable name is letters, digits, underscores.
◆May occur anywhere in a word.
Sample command
Result
set b 66 66
set a b b
set a $b 66
set a $b+$b+$b
66+66+66
set a $b.3 66.3
set a $b4 no such
variable
Tcl/Tk Tutorial Part II: Tcl Scripting December 12, 1995, slide 6
Command Substitution
◆Syntax: [script]
◆Evaluate script, substitute result.
◆May occur anywhere within a word.
Sample
command Result
set b 8 8
set a [expr
$b+2] 10
set a "b-3 is
[expr $b-3]" b-3 is 5
Tcl/Tk Tutorial Part II: Tcl Scripting December 12, 1995, slide 7
Controlling Word Structure
Tcl/Tk Tutorial Part II: Tcl Scripting December 12, 1995, slide 8
Expressions
Tcl/Tk Tutorial Part II: Tcl Scripting December 12, 1995, slide 9
Lists
Tcl/Tk Tutorial Part II: Tcl Scripting December 12, 1995, slide 10
Control Structures
◆C-like appearance.
◆Just commands that take Tcl scripts as arguments.
◆Example: list reversal.
set b ""
set i [expr [llength $a] - 1]
while {$i >= 0} {
lappend b [lindex $a $i]
incr i -1
}
◆Commands:
if for switch break
foreach while eval continue
Tcl/Tk Tutorial Part II: Tcl Scripting December 12, 1995, slide 11
Procedures
Tcl/Tk Tutorial Part II: Tcl Scripting December 12, 1995, slide 12
Procedures, cont'd
sum 1 2 3 4 5
➭ 15
sum
➭0
Tcl/Tk Tutorial Part II: Tcl Scripting December 12, 1995, slide 13
Errors
Tcl/Tk Tutorial Part II: Tcl Scripting December 12, 1995, slide 14
Advanced Error Handling
Tcl/Tk Tutorial Part II: Tcl Scripting December 12, 1995, slide 15
Additional Tcl Features:
Tcl/Tk Tutorial Part II: Tcl Scripting December 12, 1995, slide 16
Additional Tcl Features, cont'd
◆Associative arrays:
set x(fred) 44
set x(2) [expr $x(fred) + 6]
array names x
➭ fred 2
◆Variable scoping:
global uplevel upvar
◆Access to Tcl internals:
info rename trace
Tcl/Tk Tutorial Part II: Tcl Scripting December 12, 1995, slide 17
Additional Tcl Features, cont'd
◆Autoloading:
–unknown procedure invoked when command doesn't
exist.
•Loads procedures on demand from libraries.
•Uses search path of directories.
◆Coming soon (Tcl 7.5):
•Dynamic loading of binaries: load command.
•Security: Safe-Tcl.
•Event-driven I/O.
•Socket support.
Tcl/Tk Tutorial Part II: Tcl Scripting December 12, 1995, slide 18
More On Substitutions
Tcl/Tk Tutorial Part II: Tcl Scripting December 12, 1995, slide 19
Commands And Lists: Quoting Hell
Tcl/Tk Tutorial Part II: Tcl Scripting December 12, 1995, slide 20
Tcl Syntax Summary
Tcl/Tk Tutorial Part II: Tcl Scripting December 12, 1995, slide 21