Provided by:
manpages-zh_1.5.1-2_all 
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
命令的定义,它查找一ä¸è‡è¿åŠè£éœè½èŠè·è‚å¾å®ä¸”桓龌蚨喔瞿柯嫉囊桓隽斜怼H绻直淞
$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
info(n), re_syntax(n)
å…ä¸é”å KEYWORDS
auto-exec, auto-load, library, unknown, word, whitespace
[[2001/12/06
ã€å䏿³å› Linuxè®åŽå manæ‰æ¤å†åµé¡æ’èŠè¯çˆè®è‹åˆã€:
http://cmpp.linuxforum.net