如何使tcl过程使用变量?

如何使tcl过程使用变量?,tcl,Tcl,我试图得到一个非常通用的函数,并将其排序为使用它从外部遇到的变量。 我尝试了以下(简化代码),但没有任何用处: set line "found \$find1 at \$find2" do_search $line proc do_search {line} { ... if {[regexp $exp $string match find1 find2} { puts "$line" } 然而,我得到的只是:在$find2处找到$find1,或者,如果我没有在$find之前使用\

我试图得到一个非常通用的函数,并将其排序为使用它从外部遇到的变量。 我尝试了以下(简化代码),但没有任何用处:

set line "found \$find1 at \$find2"
do_search $line

proc do_search {line} {
...
if {[regexp $exp $string match find1 find2} {
     puts "$line"
}
然而,我得到的只是:
在$find2处找到$find1,或者,如果我没有在
$find
之前使用
\
,则在调用函数之前使用find的值

由于这个regexp是解析文件时while循环的一部分,因此在调用proc之后,我不能使用这些值


有什么办法吗?

对于您的确切风格,您需要
subst

if {[regexp $exp $string match find1 find2} {
     puts [subst $line]
}

但您也可以考虑使用<代码>格式< /> >:

set fmt "found %s at %s"
do_search $fmt

proc do_search {fmt} {
...
if {[regexp $exp $string match find1 find2} {
     puts [format $fmt $find1 $find2]
}

子集成功了。正是我想要的,谢谢。