TCL语言的一些学习资料

TCL语言的一些学习资料
TCL语言的一些学习资料

TCL语言的一些学习资料

NS2仿真2009-08-30 21:45:21 阅读1585 评论1 字号:大中小订阅

TCL语言

T cl tick 的构成

-------

T cl是一种很通用的脚本语言,它几乎在所有的平台上都可以解释运行,功能强大。是tool command language的缩写,发音为"tickle”,实际上包含了两个部分:一个语言和一个库。

首先,T cl是一种简单的脚本语言,主要使用于发布命令给一些互交程序如文本编辑器、调试器和shell。它有一个简单的语法和很强可扩充性,T cl可以创建新的过程以增强其内建命令的能力。

其次,T cl是一个库包,可以被嵌入应用程序,T cl的库包含了一个分析器、用于执行内建命令的例程和可以使你扩充(定义新的过程)的库函数。应用程序可以产生T cl命令并执行,命令可以由用户产生,也可以从用户接口的一个输入中读取(按钮或菜单等)。但T cl库收到命令后将它分解并执行内建的命令,经常会产生递归的调用。

在下面的清单中,将会发现第一个很常见的示例程序,它是用T cl 实现的。这是一个完整的脚本:第一行命令调用tclsh 环境,第二行命令执行实际工作。用您所选择的文本编辑器创建该脚本,输入chmod +x hello.tcl 使之成为可执行文件,然后执行它以测试您这件“作品”。

~/tcltk$ cat hello.tcl

#!/usr/bin/tclsh

puts stdout {Hello, World!}

~/tcltk$ ./hello.tcl

Hello, World!

T cl 和Tk 是解释型的、可扩展脚本语言。与BSD 许可证十分相似,该许可证

允许在任何情况下自由使用该软件,只要在所有副本中保留该版权并且在任何分发中一字不差地传递通告。这个许可证条款使T cl/Tk 成为自由软件。

T cl/Tk 是一种解释型环境。可以通过添加预编译的C 函数来扩展T cl 解释器,可从T cl 环境内部调用T cl 解释器。可以为特定目的或一般的以及广泛使用的而定制这些扩展。我们将在教程的后面看一些扩展并着重看一下第一个扩展—非常流行的Expect。

在接下来的几屏中,将回顾T cl 语言的一些主要特性,从元字符和全局变量到运算符、数学函数以及核心命令。毕竟,这些命令使T cl/Tk 成为有特色的,逐步发展的语言。请记住,在本教程中没有篇幅涉及每条命令。这里只突出一部分,以后您可以更进一步了解T cl/Tk。

#!/usr/bin/tclsh

# filename hello2.tcl

# This program code shows

# metacharacter usage

puts stdout "Hello, World! \a"

puts stdout {Hello, World! \a}

set Pints 6

set Days 7

puts stdout "The answer to the universe is [eval $Pints * $Days]!\n"

***

~/tcltk$ ./hello2.tcl

Hello, World!

Hello, World! \a

The answer to everything is 42!

T cl 元字符

元字符是在T cl/Tk 环境的上下文中有特殊含意的字符或字符对,它们包括分组语句、封装字符串、终止语句以及其它,如下表所示。左边列出的代码中演示了

一些元字符。要注意的一个特殊特性是,当使用花括号(防止替代和扩展)代替双引号时,输出中的差异。

#!/usr/bin/tclsh

# filename hello2.tcl

# This program code shows

# metacharacter usage

puts stdout "Hello, World! \a"

puts stdout {Hello, World! \a}

set Pints 6

set Days 7

puts stdout "The answer to the universe is [eval $Pints * $Days]!\n"

***

~/tcltk$ ./hello2.tcl

Hello, World!

Hello, World! \a

The answer to everything is 42!

字符用作

# 注释

; 或newline 语句分隔符

Name 变量(区分大小写)

Name(idx) 数组变量

Name(j,k,l...) 多维数组

" string " 带替换的引用

{ string } 不带替换的引用

[ string ] 命令替换

\ char 反斜杠替代

\ 行继续(在行尾)

TCL语言(二)

T cl 全局变量和反斜杠替代

#!/usr/bin/tclsh

#

# Demonstrate global variables

# and backslash substitution

if {$argc >= 1} {

set N 1

foreach Arg $argv {

puts stdout "$N: $Arg\n"

set N [expr $N + 1]

if {$Arg == "ring"} {

puts stdout "\a"

}

}

} else {

puts stdout "$argv0 on X Display $env(DISPLAY)\n"

}

***

~/tcltk$ ./hello3.tcl

./hello3.tcl on X Display :0.0

~/tcltk$ ./hello3.tcl ring

1: ring

T cl 全局变量和反斜杠替代

当T cl/Tk 脚本开始运行时,存在几个全局变量(如果在当前环境中为非空,则是预先定义的)。这些变量允许如下对操作系统进行访问:argc 是对脚本自变量的计数,而不是对调用的名称进行计数。argv 是自变量的列表(不是数组)。

argv0 是调用的文件名(可以是符号链接)。env 是根据当前外壳的环境变量名建立下标的数组。errorCode 存储有关最近的T cl 错误信息,errorInfo 包含对这同一个错误事件的堆栈跟踪。该列表还有另外12 个tcl_xxx 变量,从tcl_interactive 到tcl_version。可以在T cl/Tk in a Nutshell 中找到好的总结,(有关更多信息,请参阅本教程末尾的“参考资料”)。

在左边的样本代码中,使用了其中几个变量以及(又一次)使用了一些反斜杠引用的字符(\n 和\a)。\ char 允许替代非打印ASCII 字符。这对于UNIX 下的许多脚本语言和外壳环境都是常见的。如表中说明的那样,对于没有定义替代的反斜杠引用的字符只被简单地回送到输出。

\字符替代

\a 响铃

\b 退格

\f 换页

\n 或\newline 新行

\r 回车

\t 水平制表

\v 垂直制表

\space ("\ ") 空格

\ddd 八进制值

\xddd... 十六进制值

\c 回显‘c’

\ 反斜

TCL语言(三)

T cl 运算符和数学函数

~/tcltk$ cat maths.tcl

#!/usr/bin/tclsh

#

# Demonstrate operators and

# math functions

set PI [expr 2 * asin(1.0)]

if {$argc == 3} {

set X [lindex $argv 0]

set Y [lindex $argv 1]

set Rad [lindex $argv 2]

set Dist [expr sqrt(($X*$X)+($Y*$Y))]

set Cir [expr 2*$PI*$Rad]

set Area [expr $PI*$Rad*$Rad]

puts stdout "Distance = $Dist"

puts stdout "Circumference = $Cir"

puts stdout "Area = $Area"

} else {

puts stdout "Wrong argument count!"

puts stdout "Needs X, Y, and Radius"

}

********

~/tcltk$ ./maths.tcl 3 4 5

Distance = 5.0

Circumference = 31.4159265359

Area = 78.5398163397

T cl 支持一组标准的运算符和数学函数。这些运算符包括算术、位和逻辑运算符,可以通过expr 命令使用常规的运算符优先次序规则进行求值。另外,考虑到T cl 的实质是面向字符串的脚本语言,所以对一些数学函数进行了合理的补充:

三角函数包括cos(x)、acos(x)、cosh(x)、sin(x)、asin(x)、sinh(x)、tan(x)、atan(x)、atan2(y, x)、tanh(x) 和hypot(x, y)。与这些函数相关的单位是弧度。

Log 函数是exp(x)、log(x) 和log10(x)。

算术函数是ceil(x)、floor(x)、fmod(x, y)、pow(x, y)、abs(x)、int(x)、double(x)

和round(x)。

rand() 和srand(x) 是处理随机数的函数。

左边这个示例使用了其中一些运算符和函数来计算指定点到原点之间的距离,并返回给定半径的圆的周长和面积。另外,在这个示例中,使用列表下标(lindex)命令来访问$argv 的个别元素。

TCL语言(四)

T cl 中的循环和分支

...

#

# parse command line switches

set Optimize 0

set Verbose 0

foreach Arg $argv {

switch -glob -- $Arg {

-o* {set Optimize 1}

-v* {set Verbose 1}

default {

error "Unknown $Arg"

}

}

}

set LineCount 0

while {[gets stdin Line] >= 0} {

# to confuse Vanna White...

Remove_Vowels $Line $Optimize $Verbose

incr LineCount

}

return LineCount

...

T cl 中的循环命令是while、for 和foreach。条件(转移)命令是if/then/else/elsif 和switch。上述命令的限定语句是break、continue、return 和error。最后,catch 命令提供了错误处理能力。

if/then/else/elsif 已在前面几屏中演示过。在正式语法中会用到then,但通常会省略掉它。

在左边这个示例中,foreach 结构给switch 命令提供命令行自变量。当处理自变量时(注意:不正确的输入会终止脚本,因为还没有实现处理错误的catch),while 循环通过为每一行调用过程并同时对行计数器加1 来处理输入。代码段结束时,返回处理的行数。

TCL语言(五)

T cl 字符串和模式匹配

~/tcltk$ tclsh

% set Phrase "hello, world!"

hello, world!

% string toupper $Phrase

HELLO, WORLD!

% string totitle $Phrase

Hello, world!

% string match ello $Phrase

% string match *ello* $Phrase

1

% string length $Phrase

14

% append Phrase "Nice day, eh?"

hello, world!

Nice day, eh?

% string toupper $Phrase

HELLO, WORLD!

NICE DAY, EH?

% string wordend $Phrase 7

12

字符串是T cl 中的基本数据类型。string 命令实际上是一组命令,这些命令都是属于string 的。在使用中,正如在左边的示例中所看到,string 读取的方式非常象来自OOP 编程特定对象方法的应用程序。

表示信息的string 命令是length 和bytelength(可以有所不同,这取决于字符集)。返回布尔值(1 或0)的比较是compare、equal 和match。这里的模式匹配是由“文件名替换”(简单类型的匹配通常与外壳操作相关)完成。还可以通过独特的regex 和regsub 命令来使用“高级正规表达式”。

在T cl 中执行index、last、first、wordend 和wordstart 命令可以实现下标功能。字符串修改是由tolower、toupper、totitle、trim、trimleft、trimright、replace 和map 来处理的。后者需要预先定义一个字符映射表。用range 抽取子字符串,用repeat 多次输出字符串。

可以使用append 命令,将文本添加到现有变量中。通过使用与 C 语言的printf 命令相同的样式和约定,format 命令可用来生成输出字符串。scan 对字符串进行解析并将值赋值给变量。最后,从T cl 8.0 开始,用binary format 和binary scan 命令添加了将二进制数据作为字符串处理的功能(因而能够处理空字符,而不会失败)。

TCL语言(六)

T cl 列表

~/tcltk$ tclsh

% set c1 {Bob Carol}

Bob Carol

% set c2 [list T ed Alice]

T ed Alice

% set Party1 [list $c1 $c2]

{Bob Carol} {T ed Alice}

% set Party2 [concat $c1 $c2]

Bob Carol T ed Alice

% linsert $Party1 1 Richard

{Bob Carol} Richard {T ed Alice}

%

列表在T cl 中有两个主要用途。我们已经在通过foreach 命令(在T cl 中的循环和分支中找到)处理命令行自变量的环境中看到第一个用途。第二个用途是动态地构建T cl 命令的元素,可以在本教程后面看到使用eval 命令来执行这种用途。

list 命令接受它的所有自变量并将它们返回在一个列表环境中。自变量可以是值或变量。在左边这个示例中,可以手工创建列表,或可将其它列表视作自变量来使用列表(从而保存第一个“Party”的两对方向)。或者,concat 命令用于将两个或多个列表合并到顶级项的单个实体,返回第二个更有趣的“Party”。

其它一些有用的列表命令及其语法是:

llength $List —返回顶级项的计数结果。

lindex $List n —返回已建立下标的项,从0 开始计数。

lrange $List i j —返回列表元素的范围。

lappend $List item... —将项附加到列表。

linsert $List n item... —在列表中的指定位置上插入一项或多项,向下移列表中的其它项。

其余列表命令还包括lreplace、lsearch 和lsort。split 命令将字符串作为输入并生成经过正确解析的列表,并且在指定的字符处断开字符串。join 执行相反操作,接受列表元素并将它们串在一起,用joinstring 分隔它们。

TCL语言(六)

T cl 数组

~/tcltk$ tclsh

% set People(friend) T om

T om

% set People(spouse) Marcia

Marcia

% set People(boss) Jack

Jack

% array names People

friend boss spouse

% set Person $People(friend)

T om

% array get People

friend T om boss Jack spouse Marcia

% set People(friend) [concat $People(friend) Bob]

T om Bob

% set Person $People(friend)

T om Bob

%

理解T cl 数组的捷径是,将它们视作与Perl 散列相同的东西。T cl 数组不是用数字建立下标的线性数据结构,除非选择对数据强加那种解释。尽管带空格的字符串需要用引号括起或需要一个变量引用,但下标(或键)可以是任何字符串。正如一般的变量一样,使用set 命令初始化数组,如左边所示。圆括号内是给出的下标部分。请注意,圆括号不象花括号或双引号那样提供分组。一旦初始化为数组,就不能将变量作为单一变量来访问。如左边列表底部所示,数组元素也可以是列表。

更多T cl 数组

array 命令是一种多用途工具,很象string。array exists 命令用于测试变量是否作为数组存在,array get 用于将数组转换成列表格式,array set 用于将列表转换为数组,array names 用于返回下标列表,array size 用于返回对下标进行计数的结果。搜索整个数组有它自己的一组四个命令:array startseach、array anymore、array nextelement 和array donesearch。

虽然设计之初T cl 数组是一维的,但有一个模拟多维结构的好方法。因为下标是任意字符串,所以二维数组可以声明如下:

set i 1 ; set j 10

set array($i,$j) 3.14159

incr $j

set array($i,$j) 2.71828

这些数组键实际上分别只是字符串“1,10”和“1,11”,但对访问数据来说,谁知道这之间的差异?

TCL语言(七)

T cl 过程

#!/usr/bin/tclsh

#

# Demonstrate procedures and

# global scoping briefly

set PI [expr 2 * asin(1.0)]

proc circum {

global PI

return [expr 2.0 * $rad * $PI]

}

proc c_area {

global PI

return [expr $rad * $rad * $PI]

}

set rad 3

puts stdout "Area of circle ofradius $rad is [c_area $rad],\nthe circumference is[circum $rad].\n"

*********

~/tcltk$ ./protest.tcl

Area of circle of radius 3 is 28.2743338823,

the circumference is 18.8495559215.

proc 命令定义T cl 过程。一旦定义后,就可以象内置的T cl 命令那样调用或使用它。另外,可以用缺省值定义这些参数;例如,将左边的定义更改为读取proc c_area { {rad 1} } 。这将调用没有参数的c_area 过程,并返回单位圆的面积。

所使用的rename 命令正如它的字面含意一样,为现有命令或过程提供新名称。使用rename 有两个明显的原因。第一个原因是,通过重命名原有过程,然后用相同名称的过程替换它,来给现有命令添加功能。过程可以调用原过程,必要时可以添加一些需要的功能。使用rename 的第二个原因是,映射一个不存在的命令,例如,象rename exec {}; 一样,可以防止用户执行外部命令。变量作用域规则

作用域规则描述了过程和变量名以及值在程序的不同层次上的可见性。例如,在脚本的最外层定义的变量是全局变量。缺省情况下,全局变量是不可见的,在过程内部也不可用它们的值。这允许过程的编写者自由地定义变量名并赋值,而不必担心覆盖对于局部作用域上未知的重要变量。要使全局变量在过程内部变得可见,必须将它声明为在过程内,就象在上一屏的示例中,对PI 使用global 命令那样。

upvar 命令提供将局部变量与另一个作用域中变量的值相关联的设施。这允许根据名称将变量调用进过程,这对于当过程需要可以修改在另一个作用域的值而不仅仅使用它时,就显得非常方便。这个命令语法是upvar level $VarName LocalVar ,其中level 是到当前作用域之外的步骤数。“#0”表示全局作用域这一层。

TCL语言(八)

T cl 中的数据结构

#!/usr/bin/tclsh

#

# Demonstrate Data Structures

# using procedural wrappers

proc UserAdd { Acct rName eMail phone } {

global uData

if {[info exists uData($Acct,rname)]} {

return 1

}

set uData($Acct,rname) $rName

set uData($Acct,email) $eMail

set uData($Acct,phone) $phone

return 0

}

puts stdout [UserAdd bpb Brian bilbrey@https://www.360docs.net/doc/ab6742118.html, 555-1212]

puts stdout [UserAdd tom T om tom@https://www.360docs.net/doc/ab6742118.html, 555-1212]

puts stdout [UserAdd bpb Brian bilbrey@https://www.360docs.net/doc/ab6742118.html, 555-1212]

******

~/tcltk$ ./datas.tcl

1

除简单的多维数组以外,通常建议用已专门用于过程接口的数组来实现T cl 数据结构。从结构的使用者角度来看,虽然这种设计隐藏了具体实现细节,但提供了执行重要的错误检查能力。

左边这个示例中,在将uData 声明为全局变量后,代码执行检查,以查看帐户是否已经不存在。如果存在,则过程返回(非零)错误消息。这个返回可以用于切换到生成错误文本输出。对于本例,我们简单地提供三个连续输入,其中包括一次重复输入。这会产生如示例底部所示的输出,“1”表示由于一个重复的帐户名称而引起的一个错误返回,这是我们有意这样做的。

其它可能的数据结构包括数组列表、已链接或双重链接的数组或其中的各种排列。因为T cl 8.0 所具有的列表重实现提供了不变的访问次数,所以数组列表结构相当有效。

TCL语言(九)

路径和文件

~/tcltk$ tclsh

% file exists hello3.tcl

1

% file executable testit

% file pathtype ./hello3.tcl

relative

% set dir1 home

home

% set dir2 brian

brian

% set dir3 tcltk

tcltk

% file join /$dir1 dir2 dir3

/home/dir2/dir3

% file delete testit~

%

文件和路径操作是跨平台环境中具有挑战性的问题。对于主机OS,T cl 使用UNIX 路径名(缺省情况下,用‘/’字符分隔)和本机路径名结构。即使当程序内的数据构造正确时,也很难确保用户输入与系统需求匹配。file join 命令用于将UNIX 格式转换成本机路径名。其它路径字符串命令包括file split、dirname、file extension、nativename、pathtype 和tail。

在它扮演的“工具控制语言”角色中,T cl 有许许多多种内部文件测试和操作功能。每条命令都以file 开始,正如file exists name 中一样。其它测试命令(它们都返回布尔值)包括executable、isdirectory、isfile、owned、readable 和writable。

文件信息和操作(再提醒您一次,所有都是以file 开始)是通过atime、attributes、copy、delete、lstat、mkdir、mtime、readlink、rename、rootname、size、stat 和type 来完成。请注意,在Windows 或Mac 环境中运行一些文件信息命令时,可能会返回未定义的数据,因为例如在那些文件系统中没有表示索引节点和符号(和硬)链接数据。

使用file ... 命令而不使用通过exec 的本机命令的好处在于,前者会提供一个

可移植接口。TCL语言(十)

T cl 进程和文件I/O

~/tcltk$ tclsh

% nslookup https://www.360docs.net/doc/ab6742118.html,

Server: 192.168.1.3

Address: 192.168.1.3#53

Name: https://www.360docs.net/doc/ab6742118.html,

Address: 64.81.69.163

% set d [date]

Sun Mar 25 13:51:59 PST 2001

% puts stdout $d

% set d [exec date]

Sun Mar 25 13:52:19 PST 2001

% puts stdout $d

Sun Mar 25 13:52:19 PST 2001

******

% if [catch {open foo r} Chan] {

puts stdout "Sorry, Dave...\n"

}

% gets $Chan

One

% gets $Chan

Two

% eof $Chan

% close $Chan

%

exec 命令用于显式地执行外部命令。在Linux 下,当T cl 处于交互方式时,可以直接运行大多数外部命令,如左边示例所示。用exec 运行时,会将程序

的stdout 输出返回到T cl,而不是返回到屏幕,这允许将数据赋值给变量。当程序在后台启动时,立即返回的值是程序的PID。exec 程序可以充分利用UNIX 环境中的I/O 重定向和管道。

其它进程命令有exit(终止正在运行的T cl 脚本)和pid(返回当前或指定进程的PID),对于出于各种目的的情况,这非常便利。T cl 不合并任何本机进程控制命令,但可以将exec 命令与PID 数据一起使用来实现许多任务。

文件操纵使用下列命令:open、close、gets、puts、read、tell、seek、eof 和flush。如左边所示,在文件打开命令期间catch 命令对错误检查是有用的。当在遇到新的一行字符之前需要打印程序输出时,如在用户数据提示符中,使用flush 来写输出缓冲区。

另外一个功能(在受支持的环境中)是以打开文件的方式打开管道的能力。例如,用set Channel [open "|sort foobar" r] 打开管道通道后,第一个gets 的输出将是“Eight”(文件数据“One”到“T en”的输出在10 个单独的行上按字母顺序排列)。

将eval 用于动态脚本

~/tcltk$ cat input01.txt

1 + 2

4 + 5

7 - 9

~/tcltk$ tclsh

% set InFile [open input01.txt r]

file3

% while {[gets $InFile Op] >= 0} {

set Operation "expr $Op"

set Result [eval $Operation]

puts stdout "$Op = $Result\n"

}

1 +

2 = 3

4 +

5 = 9

7 - 9 = -2

%

在这个示例中,您可以感到eval 命令的强大功能。在正常情况下,T cl 解释器以一遍方式(one-pass)操作:它首先对输入的命令行(可能延伸在几个物理行上)进行解析,并执行任何替代。然后开始执行,除非找到不正常或残缺命令。eval 允许第二遍方式(second pass)(或许更精确地讲,是预通过(pre-pass))。因而,可以先动态构造T cl 命令,然后进行解析并执行它。

在左边的列表中,输入文件由三行组成,每行都显示了一种算术运算。调用tclsh 后,文件以只读方式打开并与$InFile 变量相关联。while 循环每次将一行读入到$Op 中。然后,通过预先计划将expr 映射到$Op 变量来构造整个T cl 命令。然后,扩展,求值,从而分配结果。最后,在stdout 上显示每步操作和结果。

虽然该样本演示了相对琐细的eval 应用程序,但从概念上讲,可以根据已知语法的输入文件的输入,很容易地将它扩展为动态文件和/或目录处理,或扩展为对文件类型、许可权、访问时间或任何种类的可测试元素的基本操作。

Tcl语言基础教程

Tcl语言参考 Tcl("Tool Command Language",即工具命令语言;Tcl念作“踢叩” "tickle" )是一种易学易用易于扩展的脚本语言,实际上包 含了两个部分:一个语言和一个库。 首先,Tcl是一种简单的脚本语言,主要使用于发布命令给一些交互程序如文本编辑器、调试器和shell。它有一个简单 的语法和很强可扩充性,Tcl可以创建新的过程以增强其内建命令的能力。 其次,Tcl是一个库包,可以被嵌入应用程序,Tcl的库包含了一个分析器、用于执行内建命令的例程和可以使你扩充 (定义新的过程)的库函数。应用程序可以产生Tcl命令并执行,命令可以由用户产生,也可以从用户接口的一个输入中读 取(按钮或菜单等)。 Tcl和其他编程语言例如C不同,它是一种解释语言而非编译语言。Tcl程序由一系列Tcl 命令组成,在运行时由Tcl解释 器解释运行。 Tcl有大量的用C/C++编写的扩展用于提供Tcl本身不具有的功能。其中使用最广泛的扩展是TK,TK提供了各种OS平台下 的图形用户界面GUI(连强大的Python语言都不单独提供自己的GUI,而是提供接口适配到TK上)。另一个流行的扩展包是Exp- ect,它提供了通过终端自动执行命令的能力,例如passwd, ftp, telnet等命令驱动的外壳。

一、Tcl程序基本结构 1、基本语法 Tcl有类似于shell的语法,一条Tcl的命令串包含了一条或多条命令用换行符或分号来隔开,而每一条命令包含了一个 域(field)的集合,域使用空白(空格或TAB)分开的,第一个域是一个命令的名字,其它的是作为参数来传给它。 Tcl解释器对一个命令的求值过程分为两部分:分析和执行。在分析阶段,Tcl 解释器运用规则识别出命令并把命令分 成一个个独立的单词,同时进行必要的置换(substitution);在执行阶段,Tcl 解释器会把第一个单词当作命令名,并查看这 个命令是否有定义,如果有定义就激活这个命令对应的C/C++过程,并把所有的单词作为参数传递给该命令过程,让命令过 程进行处理。 Tcl的命令名可以是内建的命令也可以是用户建的新命令,在应用程序中可用函数Tcl_CreateCommand来创建新的命令。 所有的参数作为字符串来传递,命令自己会按其所需来解释的参数的。 另外关于Tcl的注释有一个特殊的要求:'#'必须出现在Tcl解释器期望命令的第一个字符出现的地方,才被当作注释。 例如: set a 100 # Not a comment

TCL语言及其文件的认识、理解和编辑

TCL语言及其文件的认识、理解和编辑 欢迎大家指正和补充。 Tcl语法简介 Tcl是用于工具命令语言的一个解释器。它由作为基本命令解释器嵌入到工具(比如编辑器、调试器等)中的一个库包组成。Tcl提供了(a)用于简单的文本命令语言的分析器,(b)一组内置的实用命令,和(c)一个C 接口,工具通过它用特定于工具的命令增加内置命令。Tcl在与窗口组件库整合的时候特别有吸引力:它通过了提供变量、过程、表达式等机制增进了组件的可编程性;它允许用户编程组件的外观和动作二者;并且它在交互式程序之间提供一个简单但强力的通信机制 作为一种脚本语言,Tcl具有简单的语法 Tcl/Tk 的发明人John Ousterhout 教授在八十年代初,是伯克利大学的教授。在其教学过程中,他发现在集成电路CAD 设计中,很多时间是花在编程建立测试环境上。并且,环境一旦发生了变化,就要重新修改代码以适应。这种费力而又低效的方法,迫使Ousterhout 教授力图寻找一种新的编程语言,它即要有好的代码可重用性,又要简单易学,这样就促成了Tcl (Tool Command Language) 语言的产生。 Tcl最初的构想的是希望把编程按照基于组件的方法(component approach),即与其为单个的应用程序编写成百上千行的程序代码,不如寻找一个种方法将程序分割成一个个小的, 具备一定“完整”功能的,可重复使用的组件。这些小的组件小到可以基本满足一些独立的应用程序的需求,其它部分可由这些小的组件功能基础上生成。不同的组件有不同的功能,用于不同的目的。并可为其它的应用程序所利用。当然, 这种语言还要有良好的扩展性, 以便用户为其增添新的功能模块。最后,需要用一种强的,灵活的“胶水”把这些组件“粘”合在一起, 使各个组件之间可互相“通信”,协同工作。程序设计有如拼图游戏一样,这种设计思想与后来的Java 不谋而合。终于在1988 年的春天, 这种强大灵活的胶水- Tcl语言被发明出来了。 按照Ousterhout 教授的定义,Tcl是一种可嵌入的命令脚本化语言(Command Script Language)。“可嵌入”是指把很多应用有效,无缝地集成在一起。“命令”是指每一条Tcl 语句都可以理解成命令加参数的形式: 命令[参数1] [参数2] [参数3] [参数4] ...... [参数N] 脚本化是指Tcl为特殊的,特定的任务所设计。但从现在角度看,可以说Tcl是一种集C 语言灵活强大的功能与BASIC 语言易学高效的风格于一身的通用程序设计语言。 Tk (Tool Kit) 是基于Tcl的图形程序开发工具箱, 是Tcl的重要扩展部分。Tk 隐含许多C/C++ 程序员需要了解的程序设计细节, 可快速地开发基于图形界面Windows 的程序。据称, 用Tcl/Tk 开发一个简单的GUI 应用程序只需几个小时, 比用C/C++ 要提高效率十倍。需要指明的是这里所说的“窗口”是指Tcl定义的窗口,与X-Windows 与MS Windows 的定义有所不同,但它可完美地运行在以上两个系统上。 Tcl代表了“tool command language - 工具命令语言”。它由一个库包组成,程序可以把它用作自己的命令语言的基础。Tcl的开发由两项观察所推动。第一项观察是,通用可编程命令语言通过允许用户用命令语言写程序来扩展工具的内置设施,从而扩大了工具的能力。在强力的命令语言之中最众所周知的例子是UNIX shell[5] 和Emacs 编辑器[8]。在各自情况下,出现的有着不同寻常能力的计算环境,在很大程度上是因为能获得可编程的命令语言。第二个促成它的观察是交互式应用正在增长。在1970 年代晚期和1980 年代早期的分时环境中,几乎所有的程序都是面向批处理的。典型的使用交互式的命令shell 来调用它们。

TCL脚本实例解读

TCL脚本实例解读 作者:杨帆、老卢 前言 Sigma的这段日子在技术方面感觉提高的方面可能就是脚本的编写吧,我感觉写一个可用的脚本,并不一定非的在于你对脚本有了多了解之后,然后再去实现一个切合实际的脚本,最主要是思路,当你对所需要使用的脚本工具有一定的理解(如:TCL),在一个实际环境,首先能有个明确的想法,想实现个具体的什么东西,怎么样的思路可以实现,大脑里具备了这些条件,就可以尝试去写一些脚本。当然了,在实现的过程中肯定会遇到这样或者那样的问题,但一般来说,基本都是一些对脚本语法以及命令不熟悉的原因造成,这些问题很好解决,可以跟熟悉脚本的同事讨论,来帮你解决当时的问题,所以,千万不要因为还没有开始,就将脚本看得非常困难,导致自己一直无法迈出第一步,其实有些东西还是比较容易实现的。所以在此将我写的几个脚本在此解读解读。 文档目的 这篇文档中所附带的脚本,主要是根据Sigma这边搭建的系统测试环境而撰写出来的,脚本内容可能与今后Sigma公司为我们所开发的系统测试脚本无关,当撰写完这几个脚本之后,各人感觉有些东西还是比较有价值的,因此本人将此脚本撰写为文档,将这些东西共享出来供大家分享、借鉴、参考,相信看完这篇文档,因该会提供很多切合实际测试的一些脚本开发思路。还有,这篇文档并非一篇解释TCL命令的文档,有许多脚本中的相关命令不熟悉的地方需要查找其它资料,部分命令只做了解释或者介绍。 感谢!:) 这些脚本的撰写过程中感谢小康同学与小井同学的帮助(很多地方错误的查找、以及提供了一些解决关键问题的命令,如果没有他们的帮助,这个脚本完成的难度就大了,有很多也是他们的功劳) 环境介绍 这里提到的环境主要介绍的是系统测试的物理网络TOP环境与逻辑网络TOP环境,因为脚本里面的内容跟这个具体环境有关: 物理网络TOP,物理网络TOP所描述的实际是所有测试PC与DUT连接的物理

tcl企业愿景

tcl企业愿景 国际化是所有中国优秀企业努力的方向,国际化也必然承担着诸多风险。2004年TCL通过收购法国汤姆逊彩电业务、阿尔卡特手机业务一举进入国际市场,一年后即陷入约20亿人民币的亏损,经历了前所未有的考验。七年过去了,今年适逢TCL集团创业30周年,TCL 已经走出低谷,各产业领域都已进入良性发展的新阶段。作为一家有社会责任感的企业,TCL愿意与读者分享自己的逆境成长的经历,值得尊敬。 “中国企业国际化没有任何的经验可以借鉴,不同的发展模式和市场环境决定了众多的中国企业也不能盲目模仿欧美企业的模式,只能通过自身探索来确定自己的国际化道路”,TCL集团董事长李东生近日在接受《中国经营报》记者采访时表示。 在2005年左右企业最艰难的时期,TCL审时度势调整战略,从内部文化入手进行了一系列变革,通过企业愿景凝聚员工、形成合力,推动内部管理的精细化、建立完善的人才培养体系、打造全产业链运营模式,顺利地实现了“企业的重生”。 “TCL目前与国内同行相比,在销售业绩上也许并不突出,但在过去七年的国际化历练之后,TCL整体竞争力全面提升,我相信,TCL 未来会走得更稳、更远”,李东生说。 国际化是一场持久战

2005年是李东生迄今为止面临的最艰难的一道“坎”,之所以称之为“最”,关键在于强烈的反差。 2005年之前,TCL可谓一路高歌猛进。2000年之后,TCL超越长虹成为中国彩电业老大,之后成功改制、TCL集团成功上市,令同业望其项背;2004年对汤姆逊彩电及阿尔卡特手机业务的收购更是将李东生推上了个人事业的“巅峰”,二度被评为“中国年度经济人物”,风光一时无量。对此,李东生本人倒是颇为冷静,当年接受《中国经营报》记者采访时曾淡然地表示,“盛名之下其实难负”。 然而,最大的落差还是来自收购之后出现的巨额亏损。TCL创业20年来一直在盈利,从来没有亏损过,而骤然而降的20亿亏损不仅让TCL“一夜回到解放前”,更被推到了一个“生死的边缘”。 这一切让一向自信满满的李东生几乎乱了步伐——为了提升投资者的信心,李东生公开承诺“18个月扭亏”。但现实比理论困难得多,TCL由此陷入更大的信任危机。 至此,李东生只能背水一战。 2005年的8月3日,李东生在集团内部主持召开了一个有200多人参加的经营管理层扩大会议。正是在这个会议上,高管们达成一个共识——“国际化不是一个结果,而是一个过程,不能毕其功于一役,而是一个持久战,一步一步走,不能急于求成”。正如毛泽东在《论持久战》中所说的那样,“只有战略的持久性,才能取得胜利的唯一保证”。 “形势愈是严峻、心态就愈要平和,不能说今天一定要盈利、一定

TCL语言.

TCL语言 Tcl(最早称为“工具命令语言”"Tool Command Language", 但是目前已经不是这个含义,不过我们仍然称呼它为TCL)是一种脚本语言。由John Ousterhout创建。TCL很好学,功能很强大。TCL经常被用于快速原型开发,脚本编程,GUI 和测试等方面。TCL念作“踢叩” "tickle". Tcl的特性包括: * 任何东西都是一条命令,包括语法结构(for, if等)。 * 任何事物都可以重新定义和重载。 * 所有的数据类型都可以看作字符串。 * 语法规则相当简单 * 提供事件驱动给Socket和文件。基于时间或者用户定义的事件也可以。 * 动态的域定义。 * 很容易用C, C++,或者Java扩展。 * 解释语言,代码能够动态的改变。 * 完全的Unicode支持。 * 平台无关。Win32, UNIX, Mac上都可以跑。 * 和Windows的GUI紧密集成。Tk * 代码紧凑,易于维护。 TCL本身不提供面向对象的支持。但是语言本身很容易扩展到支持面向对象。许多C语言扩展都提供面向对象能力,包括XOTcl, Incr Tcl 等。另外SNIT扩展本身就是用TCL写的。 使用最广泛的TCL扩展是TK。TK提供了各种OS平台下的图形用户界面GUI。连强大的Python语言都不单独提供自己的GUI,而是提供接口适配到TK上。另一个流行的扩展包是Expect. Expect提供了通过终端自动执行命令的能力,例如(pass wd, ftp, telnet等命令驱动的外壳). 下面是TCL程序的例子: #!/bin/sh # next line restarts using tclsh in path \ exec tclsh ${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 [ list handleData $sock ] } proc handleData {

海尔联想TCL企业文化建设分析与比较

海尔联想TCL企业文化建设分析与比较 文章出处:发布时间:2005-07-28 企业竞争可以分为四个层次:产品竞争、营销竞争、战略竞争和文化竞争。企业产品竞争的成功是一种短期成功,营销竞争的成功是一种中期成功,战略竞争的成功是一种中长期成功,只有文化竞争的成功才是企业长期成功的根本保证。本文通过对海尔、联想和TCL三个企业的企业文化分析与比较,以论证企业文化对企业发展的重要作用,并希望这些启示能够为意图建设企业文化的企业提供参考价值。 一、海尔、联想、TCL企业文化建设的共同点 (一)企业领导人的高度文化素养 海尔、联想和TCL都建立了很好的企业文化体系,这和企业领导人具有很高的个人文化素养是分不开的。所谓文化素养主要不是指狭义的文化程度高低,而是指精神动力、价值观和行为模式。三位企业领导者共同具有如下的特点: 1.有强烈的精神动力并充满激情地追求目标。海尔是从亏损147万元起步的,联想是20万元起家的,TCL是5000元起家的,能够在市场经济激烈竞争的环境中脱颖而出,把传统的大企业和外企甩在身后,是一件非常不容易的事,没有远大的志向和精神动力是难以达到这种结果的。他们不断的为自己和企业提出新的目标和方向,从单一产品到多元化经营,从国内名牌到国际名牌,从一个落后的国有企业逐渐发展成为上市公司,他们自我超越的脚步没有丝毫的迟疑。 2.自信及坚忍不拔。自信就是相信自己的判断,尤其在困难的时候坚定信心。在1989年,在几乎全部的冰箱厂家都降价的时候,张瑞敏不降价反而提价12%;柳传志在国际品牌大军压境时不甘心只做代理,建立自有PC品牌,最终成为市场第一,将当时的"老师"

惠普甩在身后;李东生总是后发制人,在一个竞争已经很激烈的市场上异军突起,彩电、PC、手机都是如此。 3.强烈的民族自尊心和责任感。三位企业家都不约而同地将敬业报国融入企业的经营理念中,海尔响亮地打出"海尔,中国造"的口号,联想提出"世界的联想",TCL要做"世界级的企业",这种爱国强国的思想从更高层次上激励着企业家取得进步。 4.重视学习。企业家的领导能力和管理能力并不是天生具有的,这和他后天的学习、实践分不开的。三位企业家都非常重视学习、实践和总结,张瑞敏不仅对中国传统文化的精华如孙子兵法、易经、道德经等了如指掌,还委托在海外工作的同事帮助收集最新的管理书籍,使他能掌握世界最新的管理动向,李东生和TCL的高层养成了互相赠送管理书籍的习惯,有时同一本书会收到两三本。柳传志特别喜欢读企业家传记,并结合自己的体会细细捉摸,常常要读几遍,每周六都要拿出半天时间整理个人思路。 5.以身作则。张瑞敏要求员工打卡上班,自己也打卡上班,没有专车,没有专用食堂。李东生要求员工上班穿西装,自己在上班和公众场合永远西服革履,出差轻车简从。柳传志至今还像个中科院的学者,坐车看到当年的同事骑车而过心中感到不安。笔者到过三位企业家的办公室,三位的办公室不约而同地即不大也都相当俭朴。 (二)高度重视企业文化的建设 张瑞敏认为自己在企业里的主要工作之一是做一个"布道者"。海尔是最早在企业里设置"企业文化中心"这一专门机构的企业,"海尔报"不象有些企业的报纸,主要是给外面看的,"海尔报"揭露问题、批评起人来毫不留情。海尔"吃休克鱼"兼并红星电器的案例引起了哈佛大学商学院的关注,成为知名的企业管理案例之一,该案例展示海尔的兼并是以文化为先导的。海尔正是通过这种以无形资产盘活有形资产的方式,将企业文化转化成一种生产力资源。现在,海尔将这种文化扩展到国际投资方面,海尔在美国的生产车间里也到

TCL企业文化

tcl的企业文化 The Creative Life TCL即The Creative Life 三个英文单词首字母的缩写,意为创意感动生活。 TCL集团股份有限公司创立于1981年,是目前中国比较大的、全球性规模经营的消费类电子企业集团之一,旗下拥有三家上市公司:TCL集团(SZ.000100)、TCL多媒体科技(HK.1070)、TCL 通讯科技(HK.2618)。目前,TCL已形成多媒体、通讯、家电和部品四大产业集团,以及房地产及投资业务群,物流及服务业务群。 在过去二十多年中,TCL借中国改革开放的东风,秉承敬业奉献、锐意创新的企业精神,从无到有,从小到大,迅速发展成为中国电子信息产业中的佼佼者。1999年,公司开始了国际化经营的探索,在新兴市场开拓推广自主品牌,在欧美市场并购成熟品牌,成为中国民族企业国际化进程中的领头羊。 在发展壮大中,TCL确立了在自主创新方面的优势和能力:在TCL 诞生了中国第一台免提式按键电话、第一台28寸大彩电、第一台钻石手机、第一台国产双核笔记本电脑等,很多具有划时代意义的创新产品。

2007年TCL全球营业收入390.63亿元人民币,5万多名员工遍布亚洲、美洲、欧洲、大洋洲等多个国家和地区。在全球40多个国家和地区设有销售机构,销售旗下TCL、Thomson、RCA等品牌彩电及TCL、Alcatel品牌手机。2007年TCL在全球各地销售超过1501万台彩电,1190万部手机。海外营业收入超过中国本土市场营业收入,成为真正意义上的跨国公司。 TCL集团旗下主力产业在中国、美国、法国、新加坡等国家设有研发总部和十几个研发分部。在中国、波兰、墨西哥、泰国、越南等国家拥有近20个制造加工基地。 2007年TCL品牌价值达401.36亿元人民币(54亿美元)。 未来十年TCL将继续构建融设计力、品质力、营销力及消费者洞察系统为一体的“三力一系统”,将TCL打造成中国具有创造力的品牌。 放眼未来,TCL的发展目标是:通过不断提升企业的国际化经营能力,建立自有知识产权的技术优势,成为受人尊敬的、具有创新能力的全球领先企业。

Tcl简介(一):Tcl 语法

Tcl简介(一):Tcl 语法 Tcl 语法 Tcl是一种很通用的脚本语言,它几乎在所有的平台上都可以释运行,其强大的功能和简单精妙的语法会使你感到由衷的喜悦,这片文章对Tcl有很好的描述和说明。如果你看起来很吃力,那是因为Tcl与一般的语言有一些不同之处,刚开始可能有一些不理解,但很快就会掌握的。请坚持一下,我能坚持写完,你至少也应该坚持读一遍吧! Tcl Overview 这篇文章里包含了几乎Tcl 的全部。文章的作者是Tcl的缔造者John Ousterhout,对Tcl的诠释非常清楚。Introduction 简介 Tcl 代表"tool command language" 发音为"tickle." 。它实际上包含了两个部分:一个语言和一个库。 首先,Tcl是一种简单的脚本语言,主要使用于发布命令给一些互交程序如文本编辑器、调试器和shell。它有一个简单的语法和很强可扩充性,Tcl可以创建新的过程以增强其内建命令的能力。 其次,Tcl是一个库包,可以被嵌入应用程序,Tcl的库包含了一个分析器、用于执行内建命令的例程和可以使你扩充(定义新的过程)的库函数。应用程序可以产生Tcl命令并

执行,命令可以由用户产生,也可以从用户接口的一个输入中读取(按钮或菜单等)。但Tcl库收到命令后将它分解并执行内建的命令,经常会产生递归的调用。 应用程序使用Tcl作为它的命令语言有三个好处: 1 Tcl提供了标准语法,一旦用户掌握了Tcl就可以很容易的发布命令给基于Tcl的程序。 2 Tcl实现了很多的功能,使你的工作变得很方便。 3 TCl可作为程序间通信的接口。 Tcl Interpreters 解释器 在Tcl的数据结构中的核心是Tcl_Interp.一个解释器包含了 一套命令,一组变量和一些用于描述状态的东西。每一个Tcl 命令是在特定的Tcl_Interp中运行的,基于Tcl的应用程序可以同时拥有几个Tcl_Interp。Tcl_Interp是一个轻量级的结构,可以快速的新建和删除。 Tcl Data Types 数据类型 Tcl只支持一种数据结构:字符串(string)。所有的命令, 命令的所有的参数,命令的结果,所有的变量都是字符串。请牢记这一点,所有的东西都是字符串。 然而字符串的实际解释是依赖于上下文或命令的。它有三种形式:命令(command), 表达式(expresion)和表(list)。下面 会讨论细节。 Basic Command Syntax 基本语法

TCL脚本基本语法

TCL基本语法 1语言简介 TCL缩短工具命令语言的形式。由加州大学伯克利分校的约翰Ousterhout设计它。它是一种脚本语言,由其自身的解释器,它被嵌入到开发应用程序的组合。 TCL最初在Unix平台中。后来移植到Windows,DOS,OS/2和Mac OSX。TCL非常类似于其他UNIX的shell语言,类似Bourne Shell (Sh), the C Shell (csh), the Korn Shell (sh), 和Perl。 它的目的是提供程序与其他程序,也是作为一个可嵌入的翻译相互作用的能力。虽然原来的目的是为了使程序能够进行交互,可以找到由Tcl/Tk 编写的完全成熟的应用。 1.1TCL特性 TCL的特点如下: 1、减少开发时间。 2、功能强大和简单的用户界面工具包整合传统知识。 3、一次编写,随处运行。它可以运行在Windows,Mac OS X和几乎所有的Unix平台。 4、有经验的程序员很容易上手,因为语言就是这么简单,可以在几个小时或几天学习Tcl就可以搞定。 5、可以轻松地用Tcl扩展现有的应用程序。另外,也可以包括Tcl的用C,C++或Java 来扩展Tcl,或反之亦然。 6、有一组功能强大的网络功能。 7、最后,它的开源,免费的,可以用于其他无任何限制商业应用。 2基本语法 2.1命令结构 commandName空格arguments。每条命令之间通过换行或者;隔开。例如: #设置变量foo为0 set foo 0 set bar 1;puts $bar; #设置(set 为一个Tcl命令)变量bar为1,输出(puts也是一个Tcl命令)bar 2.2注释 使用#注释,不过要注意的是下面的注释是错误的: set foo 0 #设置变量foo为0,这种注释是错误的 因为tcl解析器总是认为一条命令应该以换行或者分号结束,其他的在同一行中都认为是参数。所以正确的应该是: set foo 0 #设置变量foo为0,这种注释是正确的 set foo 0; #设置变量foo为0,这种注释是正确的

tcl脚本进行二次开发

HyperMesh中利用Tcl脚本进行二次开发 杨国雄 上海世科嘉车辆技术有限公司

HyperMesh中利用Tcl脚本进行二次开发 Further Develop by Tcl Script Based on HyperMesh 杨国雄 (上海世科嘉车辆技术有限公司) 摘要:当代企业发展的关键是创新,本文通过对HyperMesh软件进来二次开发的两个实例—频响分析流程订制和通过Comps名自动定义单元属性,研讨了通过HyperMesh软件对企业CAE分析流程进行简化,标准化,人性化的可能性。 关键字:Tcl,二次开发,HyperMesh Abstract:Innovation is the key of contemporary enterprise's development. In this paper, 2 examples(customized frequency analysis process and automatic definition of element properties via comps name)were made by further developed of HyperMesh. The possibility of CAE analysis process be simplified, standardized and humanized with HyperMesh software was also discussed. Keyword:Tcl, Further Develop,HyperMesh 1 概述 随着各个行业对CAE技术应用的深入,企业对规范化分析流程,简化前处理等各个方面提出了需求。HyperMesh是一款功能强大的有限元前处理软件,同时还具有丰富的二次开发能力。通过二次开发为企业更好的利用HyperMesh软件提供了可能性。 2 HyperMesh二次开发简介 HyperMesh二次开发主要包括了2个层次的内容——宏命令和Tcl/Tk脚本。宏命令主要功能是定义面板按钮及对Tcl脚本的调用。Tcl/Tk脚本命令可以自定义各类窗口,程序的流程化控制,宏命令、Tcl脚本和C语言程序的关系如图1所示。本文主要讨论Tcl脚本的编写。

Tcl:一个可嵌入的命令语言

Tcl:一个可嵌入的命令语言 :
Tcl 是用于工具命令语言的一个解释器。它由作为基本命令解释器嵌入到工具(比如编辑器、调试器 等)中的一个库包组成。Tcl 提供了(a)用于简单的文本命令语言的分析器,(b)一组内置的实用命 令,和(c)一个 C 接口,工具通过它用特定于工具的命令增加内置命令。Tcl 在与窗口组件库整合的 时候特别有吸引力:它通过了提供变量、过程、表达式等机制增进了组件的可编程性;它允许用户 编程组件的外观和动作二者;并且它在交互式程序之间提供一个简单但强力的通信机制。 本文出现于 1990 Winter USENIX Conference Proceedings
1. 介绍 Tcl 代表了“tool command language - 工具命令语言”。它由一个库包组成,程序可以把它用作自己 的命令语言的基础。Tcl 的开发由两项观察所推动。第一项观察是,通用可编程命令语言通过允许 用户用命令语言写程序来扩展工具的内置设施,从而扩大了工具的能力。在强力的命令语言之中最 众所周知的例子是 UNIX shell[5] 和 Emacs 编辑器[8]。在各自情况下,出现的有着不同寻常能力的 计算环境,在很大程度上是因为能获得可编程的命令语言。 第二个促成它的观察是交互式应用正在增长。在 1970 年代晚期和 1980 年代早期的分时环境中, 几乎所有的程序都是面向批处理的。典型的使用交互式的命令 shell 来调用它们。除了 shell 之 外,只有少数其他的程序是交互式的,比如编辑器和邮件器。正好相反,今天使用的个人工作站, 带有它们自己的光栅显示器和鼠标,鼓励了一种不同的系统结构,在这里大量的程序是交互式的, 并且最常见的交互方式是直接用鼠标操纵单独的应用。此外,今天能获得的大显示器使很多交互式 的应用立即活跃起来成为可能,而对于在十年前很小的屏幕这是不实际的。 不幸的是,很少的今天的交互式程序拥有 shell 或 Emacs 命令语言的能力。在这里好的命令语言 是存在着的,它们趋向与特定的程序捆绑在一起。每个新的交互式程序都要求开发一个新的命令语 言。在多数情况下,应用程序员没有时间或爱好去实现一个通用设施(特别是在应用自身很简单的 时候),所以结果的命令语言趋向于带有不充分的功能和笨拙的语法。 Tcl 是一个独立于应用的命令语言。它作为一个 C 库包存在,可以用于很多不同的程序中。Tcl 库 提供了用于简单但完全可编程的命令语言的一个分析器。这个库还实现了提供了通用的编程构造的 一组内置命令,比如变量、列表、表达式、条件、循环和过程。单个的应用程序可以用特定于应用 的命令来扩展基本的 Tcl 语言。Tcl 库还提供一组实用工具例程来简化特定于工具的命令的实现。 我相信 Tcl 在窗口环境中是特别有用的,它提供了两项优势。首先,它可以用做编制应用的界面的 一个通用机制。如果一个工具基于 Tcl,则应当相对容易的去修改应用的用户界面,并使用新命令 来扩展这个界面。其次和更重要的是,Tcl 为工具之间通信提供一种统一的框架。如果在所有的工 具中统一使用了它,Tcl 将使工具在一起工作得比今天的状况更加优雅。 本文余下部分组织如下:第 2 节描述用户见到的 Tcl 语言。第 3 节讨论在应用程序中如何使用 Tcl,包括在应用程序和 Tcl 库之间的 C 语言接口。第 4 节描述在窗口环境中如何使用 Tcl 来定制 界面动作和外观。第 5 节展示如何使用 Tcl 作为进程间通信的媒介,和为什么这很重要。第 6 表述 Tcl 实现的状态和一些初步的性能测量。第 7 节把 Tcl 与 Lisp、Emacs 和 NeWS 做对比,第 8 节 总结本文。 2. Tcl 语言

企业文化分析

本文《企业文化分析:TCL企业文化新说、TCL企业精神》完全由企业文化网站长精心原创,企业文化网介绍企业文化的建设及其作用,内容仅供参考。 调一种合金式的企业文化—以中国传统的优秀文化为基础,吸收西方企业管理的精髓,谓之“新儒家”文化。哪一个企业能够在企业文化建设方面领先,哪一个企业就能建立起竞争优势。 ——TCL集团总裁李东生 TCL集团经过十多年的发展,在改革开放的有利环境中,依靠TCL人的敬业奉献和不懈努力,从无到有、从小到大,在完全没有国家资本金投入的情况下,使TCL挤身中国最大的十家电子企业行列,创造了一个民族企业高速成长的神话。但TCL也很清楚地认识到:目前企业正处在一个发展的关键时期,企业面对的是一个日益开放和竞争日趋激烈的市场,在全球经济一体化的大趋势下面对国外企业的直接竞争,TCL的企业现状和外部经济环境已发生了巨大变化,以往促使TCL成功的各种因素,并不足以保证TCL今后能继续获得成功。 TCL只有锐意变革、创新进取,提高经营管理水平,

改革经营体制,整合TCL企业文化,才能建立和保持企业的竞争优势,进而把TCL建设成真正有能力参与国际竞争的大型企业。 TCL集团是由一个小型地方国有企业发展起来的,目前虽然已经发展到比较大的规模,但与国外企业相比,TCL的整体基础还是比较薄弱的,企业还有许多和现代企业管理体制及市场经济机制不相适应的地方。为此,去年初TCL集团公司提出二次创业,确立了具体的目标和任务,并在许多方面取得了明显进展,完成了部分企业的体制改革,开发了新技术和新产品,实施了综合经营战略;在更新经营观念、建立新的经营机制以及企业文化建设方面,也在有条不紊地推进。为什么TCL要进行经营变革呢这是因为我国的经济体制正在进行根本性的变革、企业的经营环境也在发生巨大的变化,企业若不能适应市场竞争的需要,主动变革创新,提高管理水平和竟争能力,就难以继续生存和发展。 在市场方面,我们从计划经济过渡到市场经济,已形成了买方市场,特别是近年来市场有效需求的增长正在下降。据国内贸易部提供的资料,我国消费市场高速增长一直是带动我国经济增长的主要动力,但消费市场增长率逐年下降:1997年市场增长是13%,1998年市场增长将降至10.5%。过去由高速增长的市场带动起来的经济增长格局已发生变化,大

TCL企业文化理念的诠释

TCL企业文化理念的诠释 2006-09-21 19:25:03网友评论0 条进入论坛 (一)TCL企业愿景:成为受人尊敬和最具创新能力的全球领先企业 企业愿景:是企业未来状况的表述,即要努力达到的境界。它告诉企业的每一名员工“我们将成为什么”的前景,并使之成为一个组织中各个成员发自内心的共同目标,在员工心中产生一股令人深受感召的力量,形成企业的凝聚力和向心力,为企业的生存和发展提供长久持续的动力。TCL企业愿景是TCL所有员工期望共同创造的企业未来景象,是全体TCL人发自内心努力追求的共同理想。 “成为受人尊敬和最具创新能力的全球领先企业”意味着我们必须致力于:成为极具知名度和美誉度的消费者首选品牌;成为最值得信赖的伙伴-无论是客户、员工还是社会;成为引领未来的力量:包括以先进的技术和时尚的产品引领消费潮流;以领先的经营理念和商业模式适应市场变化;以完善的企业机制和管理体系保障持续的创新活力。 (二)TCL企业使命:为顾客创造价值、为员工创造机会、为股东创造效益、为社会承担责任 企业使命:是源于社会责任、义务而承担或由企业自身发展所规定的任务是关于企业经营方向、性质、责任的概括。 1 为顾客创造价值 顾客是唯一能够淘汰我们所有人的人。企业持续发展的唯一途径就是不断地创造顾客,通过提供优质产品和服务赢得顾客持续信赖与尊重。 主要行为表现:敏锐发现并快速响应顾客需求;顾客第一,每位员工的言行都要为增加顾客价值承担责任;为企业内部客户提供有价值的支持与服务。 2 为员工创造机会 员工是真正能够代表公司的人。员工是企业最宝 贵的资源,企业有责任满足员工不同层次的需求,并为员工的成长发展提供职业舞台。

TCL语言基础

TCL语言基础 变量置换:它是由一个$符号标记,变量置换会导致变量的值插入一个单词符号中。 set x 10 例如:set y $x+100 //y的值是10 + 100 如果主要想得到值110,还必须用命令置换。 命令置换:命令置换是由[]括起来的TCL命令及其参数,命令置换会导致一个命令的所有或部分单词符号被另一个命令的结果所代替 例如:set y [expr $x + 100] //y的值是110 set y [expr $x + 100 ; set b 300 ] //y的值为300,因为了的值为300 反斜杠置换:类似于C中反斜杠的用法,主要用于在单词符号中插入诸如换行符、空格、[、$等被TCL解析器当作特殊符号对待的字符。 例如:set msg multiple\space //这里最后两个单词间的空格不是分隔符,msg的值为:multiple space set msg money \ \$3333\ \nArray\ a\[2] //这个命令的执行结果为:money $3333 Array a[2] 将一个变量赋值给一个变量时,需用$符号 如:set EndUser000 …8613000000000? set EndUser $ EndUser000 相关命令 unser这个命从解析器中删除变理,后面可以有任意个参数,每个参数是一个变量名,删除数组的例子: %put $day(Monday) %put $day(Tuesday) 2 %unset day %put $day(Tuesday) append命令把文本加到一个变量的后面 例如: %set txt hello hello %append txt …! How are you? hello ! How are you. Incr命令把一个变量值加上一个整数。Incr要求变量原来的值和新加的值都必须是整数

TCL语言基础资料

TCL语言基础资料 一脚本语言详细介绍 21世纪的高级编程语言 摘要: Perl和Tcl等脚本语言代表一种与c或JavaTM 为代表的系统程序设计语言完全不同的编程形式。脚本语言为"胶着"应用程序而设计,它使用无类型方法来实现高级编程和比系统程序设计语言更快的发展应用。计算机速度的增长和混合应用的改变使脚本语言在今后的应用中越来越重要。 关键字: 组件框架,面向对象编程,脚本,强类型,系统编程 1.简介 在过去的十五年里,人们编写计算机程序的方法

发生了根本的转变。这种转变是从c或c++等系统程序设计语言到Perl或Tcl等脚本语言的过渡。虽然很多人参与了转变,却很少有人意识到它的发生,更不用说知道为什么会发生。这篇文章是我关于为什么在下个世纪脚本语言可以比系统程序设计语言更好的处理许多编程工作的一点看法。 与系统程序设计语言相比,不同的脚本语言为不同的工作而设计,这导致了语言间的根本不同。系统程序设计语言起源于像内存字等最初期的计算机元素,它为建立数据结构和算法而创建。相反的,脚本语言为胶着而设计:他们假设已经存在一套强大的组件,而它主要是把组件连在一起。系统程序设计语言使用强类型定义来帮助处理复杂事务,而脚本语言使用无类型定义来简化组件间的联系,并提供快速应用开发. 脚本语言和系统程序设计语言互为补充,并且二十世纪六十年代以来的大多数主要的计算机平台都同时提供这两种类型的语言。这些语言在组件框架中有着典型的应用:组件由系统程序设计语言创建,并由脚本语言组合在一起。然而,速度更快的机器,

更好的脚本语言,图形用户界面和组件构造重要性的不断提高,因特网的发展等发展趋势大大提高了脚本语言的应用。在今后的十年中,这种趋势将继续,而且越来越多的完全使用脚本语言和系统程序设计语言书写的应用程序将主要用来创建组件。 2.系统程序设计语言 为了理解脚本语言和系统程序设计语言的不同,最好先了解一下系统程序设计语言是如何发展的.系统程序设计语言是作为除汇编语言外的另一种选择而引入的.在汇编语言里,实际上机器的每一个细节都被反映在程序里.每个状态代表一个简单的机器指令,而程序员必须处理像寄存器分配和程序调用顺序等低层细节.因此,用汇编语言编写和维持大型程序是很困难的. 真的不掉线吗??、???????????? 二十世纪五十年代后期像Lisp,Fortran和Algol等高层语言开始出现.这些语言里的状态和机器指令不再完全一致,编译程序把过程程序中的每个状

TCL企业文化精髓 企业十二大行为信条及全套员工行为规范

T C L的十二大行为信条及员工行为规范《十二大工作信条》 第一条坦诚相待公平竞争 无论您是谁,来自哪里,只要您成为我们 TCL 国际电工大家庭中的一员,您便是一位受人尊重、为自己、为社会创造财富的劳动者。因为在我们这里,工作、生活的准则是:坦诚相待、公平竞争。 坦诚,要求我们认真尽心地面对工作,友善真诚地面对同事。我们杜绝传播小道消息,防止打小报告,拒绝流言蜚语,不听信任何无法证实的传言,我们要坚决抵制和打击那些利用传言破坏人际关系的人和事。对工作的不同见解,我们要坦诚讨论;对他人有意见或看法,我们要及时表达,真诚关心、共同进步。 “为员工创造机会”是我们企业的责任,我们不仅关心和尊重每一位员工,满足员工在精神和物质上的要求,更注重每位员工的价值和自身的发展。在 TCL 国际电工,您不必担心自己的才华被埋没,我们提倡的是公平竞争,公开、公平、公正是我们做事的基本原则。 公司所需的员工一律公开招聘、择优录取,先从内部选拔,再从社会上招聘,我们注重吸纳并包容不同性格、不同思维方式的员工。您不必担忧自己学历低、资历浅,因为我们实行的是能者上、平者让、庸者下的人事政策。在科学、严格的考核评价制度下,人人都有公平的晋升机会,真正做到“任人为贤”,而不是“任人为亲”。公司的员工只有称职与不称职之分,不存在“没有功劳也有苦劳,设有苦劳也有疲劳”之说。 公平、公正地对待每一位员工是 TCL 国际电工各级管理人员的主要职责之一。因此,只要您一丝不苟、勤恳工作、积极拼搏,取得优于他人的成绩,您就会很

快得到发展,实现自我价值。 相信 TCL 国际电工一定是您播种事业的田野,自我成才的大学。 第二条工作就是我的事业 一个不热爱自己工作的人,他的事业也一无所就。 无论一个人有多大的抱负和向往,首先应当工作。工作不仅是我们谋求生存的基本条件,也是实现抱负,并把心中的美好蓝图变为现实的唯一途径。 我们首先要生存,工作报酬便是我们每日生存所需的基本来源。工作意味着去参与、去思考、去创造,我们的事业也就是在这一系列有意义的活动中诞生的。工作中我们的知识得以增长,思想得以成熟,人格得以完善。当我们成功地完成某件工作时,我们也会从中发现自己的才华,自身价值也得到了体现。对于愿意为自己的事业献身的人来说,工作不是一种负担,而是一种乐趣,是生活中的一个组成部分,因为我们只有在工作中才能充分发挥才能,才能实现自身的价值。 工作使我们有了事业,同时也提供了我们成就事业的机会。没有工作,便不可能有事业。一个人只有将工作当作事业,才会倾注自己全部的热情,才会不惜付出,才有可能取得事业的成功。 第三条才华在工作中闪光 所谓人的才华,是指一个人在工作、生活中所表现出来的一种优秀的综合能力。我们说一个人很有才华,是指这个人运用自己的才智,在工作中取得了卓越的成绩。 TCL 国际电工为我们提供了工作的机会,实际上就是给我们提供了发挥自己实聪明才智的机会。无论我们的学历有多高、才能有多大,如果得不到社会和人们的承认,便没有任何价值。而我们要得到社会和人们承认的唯一途径,便是去

Tcl脚本语言教程

Tcl教程 TCL语法 ■脚本、命令和单词符号 (2) ■置换(substitution) (2) ■注释 (5) 变量 ■简单变量 (5) ■数组 (6) ■相关命令 (6) 表达式 ■操作数 (7) ■运算符和优先级 (7) ■数学函数 (8) List ■list命令 (10) ■concat命令 (10) ■lindex命令 (11) ■llength命令 (11) ■linsert命令 (11) ■lreplace命令 (11) ■lrange 命令 (11) ■lappend命令 (12) ■lsearch 命令 (12) ■lsort命令 (13) ■split命令 (13) ■join命令 (13) 控制流 ■if命令 (13) ■循环命令:while 、for、foreach (14) ■eval命令 (15) ■source命令 (16) 过程(procedure) ■过程定义和返回值 (16) ■局部变量和全局变量 (17) ■缺省参数和可变个数参数 (17) ■引用:upvar (18) 字符串操作 ■format命令 (19) ■scan命令 (20) 1

■regexp命令 ■regsub命令 ■string命令 文件访问 ■文件名 ■基本文件输入输出命令 ■随机文件访问 ■当前工作目录 ■文件操作和获取文件信息 错误和异常 ■错误 ■从TCL脚本中产生错误 ■使用catch捕获错误 ■其他异常 深入TCL ■查询数组中的元素 ■info命令 TCL语法> 脚本、命令和单词符号 一个TCL脚本可以包含一个或多个命令。命令之间必须用换行符或分号隔开,下面的两个脚本都是合法的: set a 1 set b 2 或 set a 1;set b 2 TCL的每一个命令包含一个或几个单词,第一个单词代表命令名,另外的单词则是这个命令的参数,单词之间必须用空格或TAB键隔开。 TCL解释器对一个命令的求值过程分为两部分:分析和执行。在分析阶段,TCL 解释器运用规则把命令分成一个个独立的单词,同时进行必要的置换(substitution);在执行阶段,TCL 解释器会把第一个单词当作命令名,并查看这个命令是否有定义,如果有定义就激活这个命令对应的C/C++过程,并把所有的单词作为参数传递给该命令过程,让命令过程进行处理。 TCL语法> 置换(substitution) 注:在下面的所有章节的例子中,'%'为TCL的命令提示符,输入命令回车后,TCL会在接着的一行输出命令执行结果。'//'后面是我自己加上的说明,不是例子的一部分。 TCL解释器在分析命令时,把所有的命令参数都当作字符串看待,例如: 2

相关文档
最新文档