tcl ドキュメントupvarには、コマンドの使用方法に関する次の例が記載されています。
proc add2 name {
upvar $name x
set x [expr {$x + 2}]
}
このプロシージャ内では、 の外側のスコープに属するx変数への参照として機能します。nameadd2
upvarの最初の引数にドル記号を付ける必要があり、2 番目の引数には付けない理由がわかりません。値ではなくupvar name x参照しているので、単に であるべきではありませんか?name