TCL使用变量生成变量,并使用变量打开/关闭文件

TCL使用变量生成变量,并使用变量打开/关闭文件,tcl,Tcl,作为一个简单的例子,我只想循环打开/关闭文件,并使用一个变量创建另一个变量。在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

作为一个简单的例子,我只想循环打开/关闭文件,并使用一个变量创建另一个变量。在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
)或数组。

通常不建议使用双解引用,因为它会导致很难维护的复杂代码。但是,如果您坚持这样做,则使用带有一个参数的
set

puts [set $tempGSR]

通常,考虑使用这种东西是一种迹象,表明应该使用
upvar
(可能是
upvar 0
)或数组来代替它。

您可能在这方面是正确的,只是习惯了在PERL中这样做有多么容易:)您可能在这方面是正确的,只是习惯了在PERL中这么做有多么容易:)找到了一个不使用strict的人就像perl中应该的那样。发现某人不
使用strict就像perl中的代码一样。