`
grantren
  • 浏览: 77340 次
  • 来自: ...
文章分类
社区版块
存档分类
最新评论

Tcl语言自动加载机制

阅读更多

“pkg_mkIndex”是一个Tcl命令,它用来为自动加载功能建立索引文件。自动加载功能允许你编写一组Tcl过程放到一个脚本文件中,然后把该文件放到某个目录之下,当程序调用这些过程的时候,如果没有这些过程,他们会被Tcl解释器会自动加载。自动加载提供了两个好处,首先,你可以把有用的过程建立为过程库,而你无需精确知道过程的定义到底在哪个源文件中,自动加载机制会自动替你寻找,第二个好处在于自动加载是非常有效率的,如果没有自动加载机制你将不得不在TCL应用的开头使用source命令来加载所有可能用到的库文件,而应用自动加载机制,应用启动时无需加载任何库文件,而且有些用不到的库文件永远都不会被加载,既缩短了启动时间又节省了内存。

 

使用自动加载只需简单的按下面三步来做:

第一,在一个目录下创建一组脚本文件作为库,一般这些文件都以".tcl"结尾。每个文件可以包含任意数量的过程定义。建议尽量减少各脚本文件之间的关联,让相互关联的过程位于同一个文件中。为了能够让自动加载功能正确运行,proc命令定义一定要顶到最左边,并且与函数名用空格分开,过程名保持与proc在同一行上。

第二步,为自动加载建立索引。启动Tcl应用比如tclsh,调用命令auto_mkindex dir pattern , 第一个参数是目录名,第二个参数是一个模式。auto_mkindex在目录dir中扫描文件名和模式pattern匹配的文件,并建立索引以指出哪些过程定义在哪些文件中,并把索引保存到目录dir下一个叫tclindex的文件中。如果修改了文件或者增减过程,需要重新生成索引。

第三步是在应用中设置变量auto_path,把存放了希望使用到的库所在的目录赋给它。auto_path变量包含了一个目录的列表,当自动加载被启动的时候,会搜索auto_path中所指的目录,检查各目录下的tclindex文件来确认过程被定义在哪个文件中。如果一个函数被定义在几个库中,则自动加载使用在auto_path中靠前的那个库。

 

例如,若一个应用使用目录/usr/local/tcl/lib/shapes下的库,则在启动描述中应增加:

set auto_path [linsert $auto_path 0 /usr/local/tcl/lib/shapes]

这将把/usr/local/tcl/lib/shapes作为起始搜索库的路径,同时保持所有的Tcl/Tk库不变,但是在/usr/local/tcl/lib/shapes中定义的过程具有更高的优先级,一旦一个含有索引的目录加到了auto_path中,里面所有的过程都可以通过自动加载使用了。

 

以下是一个具体使用实例:

 

bash-2.03# pwd

/data/grant/test/tclTest

bash-2.03# cat libraryTest.tcl

#!/usr/local/bin/tclsh

 

proc AutoLoadTest {} {

        puts "================AutoLoadTest===================";

}

 

bash-2.03# tclsh

% auto_mkIndex /data/grant/test/tclTest *.tcl

 

bash-2.03# vi test.tcl

#!/usr/local/bin/tclsh

set auto_path [linsert $auto_path 0 /data/grant/test/tclTest]

 

AutoLoadTest

 

执行test.tcl,输出结果为:

================AutoLoadTest===================

 

 

分享到:
评论

相关推荐

    TCL脚本语言详细教程

    TCL提供了一种机制来处理错误和异常情况。 **1. 错误** 当发生错误时,TCL会抛出一个错误消息。 **2. 从TCL脚本中产生错误** 可以显式地抛出错误: ```tcl error "Something went wrong." ``` **3. 使用catch...

    Tcl语言详解.zip

    **Tcl语言详解** Tcl(Tool Command Language,工具命令语言)是一种动态类型的脚本语言,由John Ousterhout教授在1988年创建。Tcl以其简单易学、可扩展性强、与C/C++等语言接口方便等特点,被广泛应用于系统管理、...

    tcl中文教程---最好的Tcl脚本语言的中文教程,值得下载

    置换是TCL中一种重要的机制,用于处理变量、命令和其他特殊字符。 - **变量置换**:使用`$`来引用变量的值。 - **命令置换**:通过`[command]`的形式来执行命令并获取结果。 - **反斜杠置换**:使用`\`来转义特殊...

    TCL语言教程

    ### TCL语言教程知识点详解 #### 一、TCL语法概览 TCL(Tool Command Language)是一种用于快速脚本编写的轻量级编程语言。它主要用于自动化任务处理、配置管理和测试脚本等领域。 ##### 脚本、命令与单词符号 - *...

    tcl与C++联合编程

    - **启动流程**:C++程序启动后,加载TCL解释器,并初始化TCL环境。接着,可以通过调用特定的API来执行TCL脚本或命令。 - **命令扩展**:为了实现更高级的功能,可以通过编写C++代码来扩展TCL的内置命令。这通常是...

    TCL语言编程文档

    ### TCL语言编程文档知识点概述 #### 1. TCL 脚本语言简介 - **启动解释器**:TCL(Tool Command Language)是一种轻量级的脚本语言,主要用于快速开发自动化任务、GUI应用程序等。启动TCL解释器是学习TCL的基础第...

    Tcl语言学习使用教程

    ### Tcl语言学习使用教程 #### TCL语法概览 TCL是一种强大的脚本语言,用于快速开发各种自动化任务和脚本程序。TCL脚本由一个或多个命令组成,这些命令可以是内置命令或是用户自定义的过程(procedures)。每个...

    编程语言TCL函数库集

    TCL(Tool Command Language)作为一种脚本语言,以其轻便性和灵活性在自动化脚本、GUI开发等领域占有一席之地。在TCL的程序设计中,初始化函数扮演着至关重要的角色,它们负责为应用程序奠定基础,确保TCL解释器...

    tcl8.6.3 源代码

    1. **TCL语言基础**:TCL8.6.3源代码首先展示了TCL的基本语法结构,包括变量定义、命令调用、控制结构(如if-else、for循环)、函数定义以及错误处理等。通过分析源代码,我们可以了解到这些基本元素如何在C++底层...

    面对对象的TCL编程--ITCL [incr TCL]

    [incr TCL]支持自动加载特性,即当程序尝试访问未加载的类或方法时,系统会自动加载相应的文件。这种机制简化了程序的启动过程,因为不必预先加载所有可能使用的模块。 ##### 6. 添加C代码到[incr TCL]类 虽然Tcl...

    tcl 8.5 network programming

    综上所述,《Tcl 8.5网络编程》一书涵盖了Tcl语言的基础知识、网络编程的核心概念和技术细节,以及如何利用Tcl构建高效、安全、跨平台的网络应用。对于希望深入掌握Tcl网络编程的开发者来说,这本书是一本不可或缺的...

    TCL解释器C#源码

    在C#环境中,TCL解释器允许开发者利用TCL语言的特性来扩展或集成到C#应用程序中。本文将深入探讨“TCL解释器C#源码”的相关知识点,包括TCL解释器的封装和脚本运行示例。 1. **TCL解释器封装**: - 在C#中实现TCL...

    Tcl_Tk入门经典(第2版)

    Tk是与Tcl配套的GUI库,它提供了丰富的控件和布局管理机制,使得开发者能够构建美观、功能完备的图形界面。Tk支持跨平台,可以在多种操作系统上运行,如Windows、Linux和macOS。通过Tcl_Tk结合,开发者可以轻松创建...

    tcl8.4库文件及头文件

    当你编写了一个使用TCL语言的应用程序,或者需要与TCL交互的程序,你需要这个dll文件来运行。 2. **tcl.h**:这是一个头文件,包含TCL的C接口声明。如果你需要在C或C++程序中嵌入TCL,或者编写扩展TCL的C/C++模块,...

    使用vs2010制作的可以用在tcl脚本中的dll

    由于TCL是动态类型的语言,无需显式声明参数类型,但需要注意的是,TCL和C++之间的数据转换可能会有一些限制,如字符串和整数的处理。 在提供的压缩包“Src”中,很可能是包含了该项目的所有源代码,包括C++的...

    Tcl.rar_tcl

    【Tcl语言详解】 Tcl(Tool Command Language,工具命令语言)是一种动态类型的脚本语言,由John Ousterhout教授在1988年创建。Tcl以其简单易学、可扩展性强的特点,广泛应用于软件开发、系统管理、网络编程、自动...

    由于TCL的解释器是用一个C\C++语言的过程库实现的

    - 深入TCL:介绍了查询数组元素、info命令、变量信息、过程信息、命令信息、版本信息、执行时间跟踪、命令重命名和删除、unknown命令和自动加载等高级功能。 TCL的这些知识点让编程人员能够利用其强大的脚本语言...

    Tcl and the Tk Toolkit

    这本书《Tcl和Tk工具包》涵盖了Tcl语言的基础,包括变量、控制结构、函数和错误处理等内容。对于Tk部分,它会讲解如何创建窗口、添加控件、布局管理以及事件处理机制。此外,书中可能还会深入探讨高级主题,如图像...

Global site tag (gtag.js) - Google Analytics