こんにちは、山本です。
"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/