OK、問題が何であるかはわかっていると思います。はディレクトリauto_path
のTcl リストです — それを使用するコードはリストを反復処理しますforeach
— パッケージ (および自動ロードされたスクリプト、私が考える古いメカニズムは価値があるよりもむしろ面倒です) を検索します。それでも、あなたはその出力である単一の要素を使用していますfile join
。これは通常、Windows 以外のプラットフォームでは問題になりません。ディレクトリ セパレーターが/
存在するためです (これは、Tcl にとって通常の非空白文字にすぎません) \
。
これは何を意味するのでしょうか?さて、その後:
set ::auto_path [file join {C:\Tcl\lib}]
そのリストの内容を尋ねることができます。たとえば、リストの最初の要素を出力できます…</p>
puts [lindex $::auto_path 0]
それは何を出力しますか?おそらくこれ:
C:Tcllib
おっと!バックスラッシュは引用文字として解釈され、完全に機能しないパスが残ります。それはうまくいきません。
修正は、別の方法を使用してauto_path
. これで実際に必要なことがわかると思います:
set ::auto_path [list {C:\Tcl\lib}]
これは別の方法ですが (まだ を使用していlist
ます。すべての場合においてトラブルのないリスト構築に最適です):
set ::auto_path [list [file normalize {C:\Tcl\lib}]]
(私の賭けは、あなたがfile join
ゲットー として使用しようとしているということですfile normalize
。そうしないでください。特に、実際にあなたが望むことを行うコマンドがある今では、それは長い間お粗末なやり方でした.)