我有一个receive.tcl脚本,它只包含单个proc,包含一些1KLOC
puts "DEBUG_1"
proc Receive { arg1 arg2} {
puts "DEBUG_2"
... TCL Code
}
puts "DEBUG_3"
现在我需要在这么多不同的脚本中使用这个proc接收;
让我们说; 1.tcl
2.tcl
3.tcl
等等,所有这些1.tcl
2.tcl
都是从主人(Master.tcl
)调用的。
是否有必要在每个source PATH/receive.tcl
1.tcl
中包含/写2.tcl
等等;使用Receive
。
OR
我可以从一些Master(Master.tcl
)脚本调用“source PATH / receive.tcl”,它可以在任何1.tcl
2.tcl
中进一步使用,依此类推而不另行包含任何内容;将TCL解释器存储/记住此proc接收并可以在任何其他脚本中使用吗?
问题:当我在每个$PATH/receive.tcl
1.tcl
中“2.tcl
来源,而不是Master.tcl
; Master.tcl
包含source $PATH/1.tcl
source $PATH/2.tcl
等等;然后我正在执行Master.tcl
。
1.tcl
成功执行; receive.tcl
;正在打印DEBUG_1
和DEBUG_3
,proc Receive
已成功使用1.tcl
。 2.tcl
时,它会找到source $PATH/receive.tcl
receive.tcl
DEBUG_1
;之后的分段错误。 答案 0 :(得分:2)
好的,先说几件事:Tcl不应该崩溃(如果你不使用任何第三方dll)。如果是,请考虑creating a bug report。
1kloc对我来说听起来很糟糕,也许其他更好的东西。我认为你试图解析一些输入并调用不同的东西,如果是这种情况,请看一下interp
,这是我在Tcl中最喜欢的宝石之一。
回答您的问题: 您可以在主服务器中获取文件,并从以后获取的其他文件中使用它。
在您的情况下(其他文件要调用该文件的唯一目的),您可以创建一个包。创建包时最大的问题是决定安装包的位置(使用TCL_LIBRARY
环境变量,在$auto_path
中选择一个目录,将文件夹添加到代码中的$auto_path
。查看Tcl Tutorial以供参考。