如何订购tcl程序来使用变量?

时间:2013-03-06 17:30:52

标签: tcl

我正在尝试使用一个非常通用的函数,并命令它使用它从外部传来的变量。 我尝试过以下(简化代码),但没有用:

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

proc do_search {line} {
...
if {[regexp $exp $string match find1 find2} {
     puts "$line"
}

但我得到的是:found $find1 at $find2或者,如果我在\之前没有使用$find,则在调用函数之前查找值。

鉴于此正则表达式是解析文件时while循环的一部分,我不能在调用proc之后使用这些值。

任何想法怎么做?

1 个答案:

答案 0 :(得分:2)

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

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

但您也可以考虑使用format

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]
}