|
|
Dieser Artikel ist verfübar in: English Castellano ChineseBig5 ChineseGB Deutsch Francais Italiano Nederlands Turkce Korean |
von Brent B. Welch <welch(at)acm.org> Über den Autor: Brent Welch Lieblingsbeschäftigung ist die Pflege der www.scriptics.com Website, welche unter anderem kommentierte Verweise auf URLs enthält, die sich mit Tcl beschäftigen (das Tcl Resource Center). Ausserdem findet man dort die E-Commerce Infrastruktur für TclPro. Brent entwickelte einige grosse Tcl/Tk Applikationen, darunter der WWW Server TclHttpd, welcher auch auf www.scripts.com läft, das E-Mail Benutzerinterface Exmh und der HTML Editor webtk. Desweiteren ist er der Autor von "Practical Programming in Tcl and Tk". Welch machte seinen Abschluss in Luft- und Raumfahrttechnik an der Universität von Colorado, Boulder, 1982, promovierte in Informatik in Berkeley 1986 und wurde 1990 Professor für Informatik, ebenfalls in Berkeley. Vorher war Brent Mitglied des Forschungsteams von Xerox PARC, wo er an verteilten Systemen arbeitete. Später wechselte er zum Tcl/Tk Team bei Sun Microsystems Er ist Mitglied des ACM und der IEEE Computer Gesellschaft. Home Page: http://www.beedub.com/ Übersetzt ins Deutsche von: Harald Radke <harryrat(at)gmx.de> Inhalt: |
Zusammenfassung:
Dieser Artikel erlätert dem Leser die grundlegenden Konzepte und die Syntax der Tcl Skriptsprache.
Für eine Scriptsprache besitzt Tcl eine vergleichsweise einfache Syntax.
cmd arg arg arg
$foo
foo
verwendet.
[clock seconds]
[clock seconds]
die gegenwärtige Zeit
in Sekunden ausgegeben.
"some stuff"
{some stuff}
\
\n
(Zeilenumbruch)
verwendet. Desweiteren unterdrükt er die Auswertung von Dollarzeichen, Anführungszeichen,
eckigen und geschweiften Klammern.
Das folgende Tcl Kommando gibt die aktuelle Zeit aus. Es werden drei Tcl
Befehle verwendet:
set
, clock
und puts
.
Der Befehl set
weist der Variablen ihren Wert zu. Mit dem clock
Befehl
werden Zeitwerte manipuliert. Zum Schluss gibt der Befehl puts
einen String und den Wert der Variable aus.
set seconds [clock seconds] puts "Aktuelle Zeit: [clock format $seconds]"
Note that you do not use $ when assigning to a variable.
Man beachte, dass das Dollarzeichen nur bei der Verwendung des Wertes einer
Variable, nicht aber bei deren Zuweisung benutzt wird.
Eigentlich ist die Variable seconds
in diesem Beispiel gar nicht notwendig,
die gegenwärtige Zeit kann auch wie folgt ausgegeben werden:
puts "Aktuelle Zeit: [clock format [clock seconds]]"
Der Tcl Parser durchläft, gesteuert durch die Syntax, drei Phasen: Anordnung der Argumente, Substitution der Ergebnisse und Ausführung der mit dem Befehl verbundenen Routine.
puts
Befehles
zu übergeben.
$foo
durch den Wert der
Variable foo
ersetzt und geklammerte Befehle durch ihre Ergebnisse
ersetzt. Diese Reihenfolge, erst die Anordnung der Argumente und erst danach die
Auswertung, ist sehr wichtig, da so die Struktur von Kommandos auch durch
ungewöhnliche Werte nicht komplizierter wird.
Hier ein weiteres Beispiel:
Hier werden geschweifte Klammern für die Anordnung von Argumenten verwendet, ohne dass irgendeine Auswertung stattfindet. Der Tcl Parser behandelt denset i 0 while {$i < 10} { puts "$i squared = [expr $i*$i]" incr i }
while
wie jedes andere Kommando
auch, ohne ihn speziell zu behandeln.
Die Implementierung des while
commandos ist es, die
weiss, dass das erste Argument ein Ausdruck und das zweite Argument
eine Folge von weiteren Tcl Kommandos ist.
Die Klammern bilden zwei Argumente: einen boolschen Ausdruck, welcher
die Schleife steuert und die Kommandos im Schleifenrumpf.
Hier sind zwei mathematische Ausdrücke zu sehen: ein boolscher Vergleich und
eine Multiplikation.
Der while
Befehl wertet automatisch sein erstes Argument als einen
Ausdruck aus.
Sollen hingegen mathematische Berechnungen ausgeführt werden, so muss explizit
der Befehl expr
benutzt werden.
Im Endeffekt lässt Tcl jemand anderen die richtige Arbeit machen.
Es wurde gezeigt, dass Tcl expr
für die Auswertung mathematischer
Ausdrücke, puts
für die Ausgabe und set
für
die Zuweisung von Variablen verwendet.
Diese Tcl Befehle werden durch C Prozeduren realisiert, welche bei Tcl registriert
sind. Die C Prozeduren übernehmen die Zeichenkettenargumente des Tcl Befehles
und geben eine neue Zeichenkette als Ergebnis zurück.
Es ist recht einfach, eigene C Befehlsprozeduren für jeden Aufgabenbereich zu erstellen,
sei es für den Zugriff auf Datenbanken oder ein grafisches Benutzerinterface.
Tcl selbst, die Sprache also, hat keine Ahnung, was die Kommandos bewirken. Sie
ordnet lediglich Argumente an, substituiert Ergebnisse und wertet Befehle aus.
Eine Prozedur für die Berechnung der Fakultät:
proc fac {x} { if {$x < 0} { error "Ungültiges Argument $x: muss ein positiver Integer Wert sein" } elseif {$x <= 1} { return 1 } else { return [expr $x * [fac [expr $x-1]]] } }
|
Der LinuxFocus Redaktion schreiben
© Brent B. Welch, FDL LinuxFocus.org Einen Fehler melden oder einen Kommentar an LinuxFocus schicken |
Autoren und Übersetzer:
|
2002-02-24, generated by lfparser version 2.26