作为一个简单的例子,我只想循环打开/关闭文件,并使用一个变量来创建另一个变量。在PERL中,这很容易,但我无法在TCL 中找到它
set gsrs ""
lappend gsrs "sir"
lappend gsrs "dir"
foreach gsr $gsrs {
set file "sdrv/icc/instance_toggle_overwrite.$gsr.txt"
puts "*** I : Generating $file"
set tempGSR gsr
puts "$$tempGSR" # would like output to be value of $gsr
set $gsr [open $file "w"] # normally you would not use a variable here for filename setting
close $$gsr
}
通常不建议双重取消引用,因为这会导致很难维护的复杂代码。但是,如果你坚持要这样做,那么使用set
和一个参数来做:
puts [set $tempGSR]
通常,考虑使用这种东西意味着应该使用upvar
(可能是upvar 0
(或数组。