作者: Koichi Yamamoto
日時: 2004/4/13(22:53)
こんにちは、山本です。

"HFC01730@... (水羽信男)"さんは書きました:
> ただこの間、いろいろ試行錯誤していた気付いた点ですが、
> proc unicodeout {text filename} {
>     set fd [open $filename w]
>     fconfigure $fd -encoding unicode
>     puts $fd \ufeff$text
>     close $fd
> }
> でファイル出力するためには、たとえば先のinsert.tclの最
> 後は puts [join $data5 \n] ではだめで、
> set data6 [join $data5 \n]でなければダメなのですね。

insertプロシージャで復帰値を返すようにするのであれば、
    return [join $data5 \n]
とやるか、または
    join $data5 \n
と書けばOKです。

putsコマンドは標準出力に文字列を出力するコマンドで、
復帰値はありません。
setコマンドは変数に値を設定するコマンドですが、
その設定値を復帰値に返してくれます。プロシージャは
最後に実行したコマンドの復帰値をプロシージャ自身の
復帰値として返しますので、set data6 [join $data5 \n]と
やっても期待通りの結果を得ることができます。

tclshやwishの上で操作していると、標準出力もコマンドの
復帰値も同様に表示されるので、判りにくいですね。

c:\>tclsh84
% set a 100
100
% puts 100
100
% join {1 0 0} ""
100


--
Koichi Yamamoto, 
http://homepage3.nifty.com/yamakox/