藤岡です。
Tclはプラットフォームに依存した行末文字を検出して、読み込んだときには内
部的にUNIXの形式に変換します。それを書き出すときにそのプラットフォーム独
自の行末文字に変換して出力します。
従って、
puts -nonewline $out [read $in]
のような感じで、入力して出力するだけで、行末文字をそのプラットフォームの
ものに統一できます。
と、ウェルチの「Tcl/Tk入門 第2版」の120ページには書いてあります(^^;)この
本はお勧めです。
On Mon, 28 Jul 2003 21:57:41 +0900
Ito Takahiro <taka@...> さんwrote:
> 伊藤です。
>
> 藤岡さん、ありがとうございます。
> もっと問題を具体的に書くべきでしたが、
>
> >while {[gets $fd line] >= 0} {
> >で読み込めば改行は削除して読み込むはずですが・・・
>
> とのことで、gets はコントロールコードの手前まで読み込むのか
> なと思い、全く違う方法ですが問題が解決できました。
>
> そもそも問題というのは、
> ・UNIXサーバに複数(1000以上)のテキストファイルがある
> ・そのファイルは不特定多数よりFTPでWindowsからアップロード
> される
> ・アップロードの際、バイナリモード、アスキーモード何でもあり
>
> このファイル達を全てローカルのPCにダウンロードし、Tclで書い
> たフィルタを通して、再びアップロードする・・・・・
> という事をしたかったのです。
> その際、アスキーモードでダウンロードすると、バイナリでアップ
> ロードされたファイルは、行の末尾に余計なコントロールコードが
> あったため、そのコントロールコードを削除したかったのですが、
> regsubではうまく動きませんでした。
> (通常の改行は改行として出力したかった)
> ここで、藤岡さんのヒントがもらえたので、全てのファイルをバイ
> ナリ-モードでダウンロードし、フィルタをかけたところ、問題な
> く動作しました。
> Windowsのテキストエディタでは、改行となっていなくても(LFの
> み)、Tclの gets で1行として読む事ができました。
>
> おさがわせしました。
>
> ## なんか状況がうまく説明できない・・・ m(__)m
>
>
> --
> 伊藤 孝浩
> mailto:taka@...
藤岡 和夫
FGALTS@...
kazuf@...
TS Networkのために http://homepage1.nifty.com/kazuf/