コメント文

Tclは最初の単語がシャープ('#')で始まる行をコメントと見なします。
バックスラッシュまたは円記号('\')を使って複数行記述することもできます。

# コメント1
# コメント2
# コメント3

# コメント1 \
  コメント2 \
  コメント3

行の途中からコメントとする場合は、セミコロン(';')を使って'マルチステートメントにします。

set var 123  # これはダメ
set var 123; # これはOK!

日本語でコメントを記述する際の注意

SJISコードでコメントを書く場合は、注意が必要です。
以下のコードは一見、何も問題ないようにに見えますが、

# foo コマンド
proc foo {} {
    # コマンド定義
    puts "こんにちは"
}

コメント中の'マ'の字はSJISコードの2バイト目が中括弧の閉じ('}')になっています。
Tclは中括弧の開きと閉じの関係が合わないと文法エラーになることがあります。
このコードはWindows日本語版では問題なく動作しますが、Windows英語版では3行目でエラーになります。
1行目でもエラーになりそうですが、ブロックの外なのでエラーになりません。

以下のコードのコメントは英語ですが、
ダブルクォート中に'マ'の文字があり、同じ問題が潜んでいます。

proc foo {} {
    # comment
    puts "コマンド"
}

この手の問題は、非常に発見しにくい厄介な問題なのです。

対策

いくつかのSJIS対策を考えました。

WebでLintのようなコードチェッカを探してみましたが、これというものは見つかりませんでした。
簡単なものなら自作できますし。。。

Tcl8.5からは...

Tcl8.5からsourceする場合のエンコーディングが指定できるようになるようです。
この機能を使うとSJIS問題が解決しそうです。(以下は記述例です)

!#/usr/bin/tclsh -encoding utf-8

#!/bin/sh
# I wish to use tclsh \
exec tclsh -encoding utf-8 "$0" "$@"

package ifneeded pkg 1.02 [list source -encoding utf-8 \
      [file join $dir pkg.tcl]]

これが抜本対策になるかどうかは今のところ?です。。。