______________________________________________________________________________
NAME
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, 例 如
auto_mkindex foo *.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
关 键 字 KEYWORDS
auto-exec, auto-load, library, unknown, word, whitespace
[中 文 版 维 护 人 ]
寒 蝉 退 士
[中 文 版 最 新 更 新 ]
2001/12/06
《 中 国 Linux 论 坛 man 手 册 页 翻 译 计 划 》 :
跋
本 页 面 中 文 版 由 中 文 man 手 册 页 计 划 提 供 。 中 文 man 手 册 页 计 划 : https://github.com/man-pages-zh/manpages-zh