auto_execok, auto_import, auto_load, auto_mkindex,
auto_mkindex_old, auto_qualify, auto_reset, tcl_findLibrary, parray,
tcl_endOfWord, tcl_startOfNextWord, tcl_startOfPreviousWord,
tcl_wordBreakAfter, tcl_wordBreakBefore - standard library of Tcl
procedures
总览 SYNOPSIS
auto_execok cmd
auto_import pattern
auto_load cmd
auto_mkindex dir pattern pattern ...
auto_mkindex_old dir pattern pattern ...
auto_qualify command namespace
auto_reset
tcl_findLibrary basename version patch initScript enVarName varName
parray arrayName
tcl_endOfWord str start
tcl_startOfNextWord str start
tcl_startOfPreviousWord str start
tcl_wordBreakAfter str start
tcl_wordBreakBefore str start
介绍 INTRODUCTION
Tcl
为公共需求的功能包含了一个
Tcl 过程库。在 Tcl
库中定义的过程是适用于多种不同的应用的通用过程。用
info library 命令返回 Tcl
库的位置。除了这个 Tcl
库之外,每个应用通常都有它自己的支持过程库;这个库的位置通常用
$app_library
全局变量的值给出,这里
app
是应用的名字。例如,Tk
库的位置保持在变量
$tk_library 中。
要访问在 Tcl
库中的过程,一个应用应该
source (载入)库中的文件
init.tcl,例如,Tcl 命令
source [file join [info library] init.tcl]
如果在一个应用的 Tcl_AppInit
过程中调用了库过程
Tcl_Init,则这(个加载)将自动发生。在
init.tcl 中的代码将定义
unknown
过程和使用下面定义的自动装载机制安排其他过程在需要时装载。
命令过程 COMMAND PROCEDURES
在 Tcl
库中提供了下列过程:
- auto_execok
cmd
- 确定是否有一个叫 cmd
的一个可执行文件或
shell
内置命令。如果有,它返回要传递给
exec 来执行这个叫 cmd
的可执行文件或 shell
内置命令的那些参数的一个列表。如果没有,它返回一个空串。这个命令检查在当前查找路径中目录(由
PATH
环境变量给出),在其中查找叫
cmd
的一个可执行文件。在
Windows
平台上,查找被展开为相同的目录和与
exec
使用相同的文件名扩展。
Auto_exec 在一个叫 auto_execs
的数组中记住以前查找的信息;这避免在将来调用相同的
cmd
时进行路径查找。可以使用命令
auto_reset 来强迫 auto_execok
忘掉缓存的信息。
- auto_import
pattern
- 在 namespace import 期间调用
Auto_import 来查看用 pattern
指定的导入命令是否驻留在一个
自动装载的库中。如果是,则装载这个命令,这样要建立导入连接的解释器就可以获得它们。如果这个命令不驻留在自动装载库中,auto_import
什么都不做。
- auto_load
cmd
- 这个命令尝试装载一个叫做
cmd 的 Tcl
命令的定义,它查找一个自动装载路径,它是一个或多个目录的一个列表。如果全局变量
$auto_path
存在的话,则它给出这个自动装载路径。如果没有
$auto_path 变量,则若 TCLLIBPATH
环境变量存在则使用它。否则自动装载路径只包含
Tcl
库目录。在自动装载路径中的每个目录中必须有描述在这个目录中定义的一个或多个命令的一个文件
tclIndex,和要被求值来装载每个命令的一个脚本。应当使用
auto_mkindex
命令来自动生成 tclIndex
文件。如果在一个索引文件中找到
cmd
,则求值适当的脚本来建立这个命令。如果成功的建立了
cmd,则 auto_load
命令返回
1。如果没有给 cmd
的索引条目或这个脚本实际上定义的不是
cmd(例如,因为索引信息过时了),这个命令返回
0。如果在处理这个脚本的时候发生了一个错误,则返回这个错误。Auto_load
只读这个索引文件一次并把它保存到数组
auto_index 中;以后对
auto_load
的调用将在这个数组中检查
cmd
而不是重读索引文件。可以用命令
auto_reset
删除缓存的索引信息。这将强制下一个
auto_load
命令从磁盘重新装载索引数据库。
- auto_mkindex
dir pattern pattern ...
- 生成适合于 auto_load
使用的一个索引。这个命令在
dir
中查找名字匹配任何
pattern
参数的所有文件(使用
glob
命令进行匹配),生成在所有匹配的文件的中定义的所有
Tcl
命令过程的一个索引,并且在
dir 中的一个叫 tclIndex
的文件中存储索引信息。如果未给出模式,则假定模式是
*.tcl,例如
将在子目录读 foo
中读取所有 .tcl
文件并生成一个新索引文件
foo/tclIndex。
Auto_mkindex 通过把 Tcl
脚本载入(source)到一个从解释器中来分析它们并监视执行的
proc 和 namespace
命令。扩展可以使用(没有文档)
auto_mkindex_parser 包来注册对 auto_load
索引有所贡献的其他命令。你必须阅读
auto.tcl
来查看这是如何工作的。
Auto_mkindex_old
在一个相对不复杂的方式分析
Tcl 脚本:
如果任何一行包含字
proc
为它的第一个字,则假定它为一个过程定义并接受这一行的下一个字为这个过程的名字。不是以这种方式出现的过程定义(比如,在
proc
前面有空格)将不被编排索引。如果你的脚本包含“危险”代码,比如全局初始化代码或有特殊字符如
$、*、[ 或 ]
的过程名字,则你使用
auto_mkindex_old 是更安全的。
- auto_reset
- 销毁被 auto_execok 和 auto_load
缓存的所有信息。下次需要这些信息的时候将从磁盘重新读取。Auto_reset
还删除在 auto-load
中列出的所有过程,这样下次使用它们的时候将装载它们的刷新了的复本。
- auto_qualify
command namespace
- 计算 command
的完全限定的名字的一个列表。这个列表镜像标准
Tcl
解释器用以查找命令的那个路径:
首先它在当前名字空间中查找这个命令,接着在全局名字空间中。相应的,如果
command 是相对的并且
namespace 不是
::,则返回的这个列表两个元素:
一个是由 namespace
界定范围的command,如同它是一个在
namespace
名字空间中的命令一样;而另一个
command
如同在全局名字空间中的一个命令一样。否则,如果
command 是绝对的(它以 ::
为开始),或者 namespace
是
::,则这个列表只包含一个
command
,如同它是一个在全局名字空间中的命令一样。
在 Tcl
中自动装载设施使用
Auto_qualify,用来生成自动装载索引如
pkgIndex.tcl,和用来在运行时进行实际的函数自动装载。
- tcl_findLibrary
basename version patch initScript enVarName varName
- 这个命令是扩展在它们的初始化期间使用的一个标准查找过程。扩展调用这个过程来在多个标准路径中查找它们的过程。目录名字的最后的构成部分通常是
basenameversion
(例如,tk8.0),但在建造等级上他可能是“库”。一旦找到就把
initScript 文件
source(加载)到解释器中。把在其中找到文件的那个目录保存到全局变量
varName
中。如果已经定义这个变量(比如,在应用初始化期间用
C
代码),则不进行查找。否则在以下这些目录中进行查找:
由环境变量 enVarName
给出名字的目录;相对于
Tcl 库的目录;相对于(???
relative to)在标准安装 bin 或
bin/arch
中的可执行文件的目录;相对于在当前建造树中的可执行文件的目录;相对于在并行建造树中的可执行文件的目录。
- parray
arrayName
- 把数组 arrayName
中的所有元素的名字和值输出到标准输出上。ArrayName
必须是一个对于 parray
的调用者是可以访问的一个数组。它可以是局部的或全局的。
- tcl_endOfWord
str start
- 返回字符串 str
中在起始索引 start
之后出现的第一个字结束(end-of-word)位置的的索引。定义字结束位置为在起始点之后跟随在第一个单字字符后面的第一个非字字符。如果在起始点之后没有字结束位置则返回
-1。关于 Tcl
如何确定哪个字符是单字字符的详情参见下面对
tcl_wordchars 和 tcl_nonwordchars
的描述。
- tcl_startOfNextWord
str start
- 返回字符串 str
中在起始索引 start
之后出现的第一个字开始(start-of-word)位置的的索引。定义字开始位置为跟随在一个非字字符后面的第一个单字字符。如果在起始点之后没有字开始位置则返回
-1。
- tcl_startOfPreviousWord
str start
- 返回字符串 str
中在起始索引 start
之前出现的第一个字开始(start-of-word)位置的的索引。如果在起始点之前没有字开始位置则返回
-1。
- tcl_wordBreakAfter
str start
- 返回字符串 str
中在起始索引 start
之后出现的第一个字边界的索引。如果在给定字符串中在起始点之后没有边界则返回
-1。返回的索引参照组成一个边界(字符)对的第二个字符。
- tcl_wordBreakBefore
str start
- 返回字符串 str
中在起始索引 start
之前出现的第一个字边界的索引。如果在给定字符串中在起始点之前没有边界则返回
-1。返回的索引参照组成一个边界(字符)对的第二个字符。
变量 VARIABLES
在 Tcl
库中的过程定义或使用下列全局变量:
- auto_execs
- 用它来记录关于特定命令是否存在为可执行文件的信息。
- auto_index
- auto_load
用它来保存从磁盘读来的索引信息。
- auto_noexec
- 如果设置了任何值,则
unknown
不尝试自动执行任何命令。
- auto_noload
- 如果设置了任何值,则
unknown
不尝试自动装载任何命令。
- auto_path
- 如果设置了它,则它必须包含一个有效的
Tcl
列表,给出在自动装载操作中要查找的目录。在启动期间初始化这个变量为依次包含:
在 TCLLIBPATH
环境变量中列出的目录,由
$tcl_library
变量命名的目录,$tcl_library
的父目录,在 $tcl_pkgPath
变量中列出的目录。
- env(TCL_LIBRARY)
- 如果设置了它,则它指定包含库脚本的目录的位置(这个变量的值将被赋予
tcl_library 变量并被 info library
命令所返回)。如果这个变量未被设置,则使用缺省的值。
- env(TCLLIBPATH)
- 如果设置了它,则它必须包含一个有效的
Tcl
列表,给出在自动装载操作期间要查找的目录。必须用
Tcl
格式指定目录,使用“/”作为分隔符而不管是在什么平台上。只在初始化
auto_path
的时候使用这个变量。
- tcl_nonwordchars
- 这个变量包含一个正则表达式,用于象
tcl_endOfWord
这样的例程来识别一个字符是否是一个字的一部分。如果这个模式匹配一个字符,则把这个字符作为一个非字(non-word)字符对待。在
Windows
平台上,空格、tab、和换行被作为非字字符对待。在
Unix
下,除了数字、字母和下划线之外,所有字符都是非字字符。
- tcl_wordchars
- 这个变量包含一个正则表达式,用于象
tcl_endOfWord
这样的例程来识别一个字符是否是一个字的一部分。如果这个模式匹配一个字符,则把这个字符作为一个单字字符对待。在
Windows
平台上,字有任何不是空格、tab、或换行的字符组成。在
Unix
下,字由数字、字母或下划线组成。
- unknown_pending
- unknown
用它来记录正在查找的命令。在
unknown
在自身上无穷递归的地方,使用它来检测错误。在
unknown
返回前删除它的值。
参见 SEE ALSO
info(n), re_syntax(n)
关键字 KEYWORDS
auto-exec, auto-load, library, unknown, word, whitespace
《中国 Linux 论坛 man
手册页翻译计划》:
http://cmpp.linuxforum.net
跋
本页面中文版由中文
man 手册页计划提供。
中文 man
手册页计划:https://github.com/man-pages-zh/manpages-zh