[#23332] to_str再考 — matz@... (Yukihiro Matsumoto)

まつもと ゆきひろです

15 messages 2004/04/05

[#23380] [SEGV] make test-all (bccwin32 ruby1.9.0) — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp>

山本です。

17 messages 2004/04/15
[#23400] Re: [SEGV] make test-all (bccwin32 ruby1.9.0) — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2004/04/16

山本です。落ちる場所がわかりました。

[#23402] Re: [SEGV] make test-all (bccwin32 ruby1.9.0) — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2004/04/16

山本です。

[#23403] Re: [SEGV] make test-all (bccwin32 ruby1.9.0) — nobu.nakada@... 2004/04/16

なかだです。

[#23405] Re: [SEGV] make test-all (bccwin32 ruby1.9.0) — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2004/04/16

山本です。

[#23407] Re: [SEGV] make test-all (bccwin32 ruby1.9.0) — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2004/04/16

山本です。

[ruby-dev:23365] mswin32版rubyのgetsの挙動について

From: Kenji Yamashita <yamashita_kenji1972@...>
Date: 2004-04-11 06:01:21 UTC
List: ruby-dev #23365
山下です。

ExcelファイルをCSV形式で保存して、Rubyで処理しようとしています。最終
的にExerbでWin32アプリケーションにする予定ですが、慣れもあってcygwin
版のrubyを使ってスクリプトを書きました。

一応、完成したのでExerbでEXEファイルを作成して実行してみたのですが、
思うように動いてくれません。ExerbのFAQにmswin32版での動作を確認する
ようにとあったので、Downloadして動かしてみたのですが、やはり動きませ
んでした。

動きを検証していくと、getsの振る舞いの違いよるものだということが分か
りました。具体的にはmswin32版rubyで"\r"(0x0d)をセパレータとしたgets
がうまく動きません。CSVファイルの各行は"\r\n"(0x0d0x0a)で区切られて
おり、各行には"\n"(0x0a)を含むフィールドが含まれています。この状況で
行単位で処理を行いたいのですが、

1. gets("\r\n")とすると、ファイル全体が1行として取り込まれます
2. gets("\n")とすると、"\n"を含むフィールドの途中で分割されます
3. gets("\r")とすると、ファイル全体が1行として取り込まれます

2.は当然として、1.はcygwin版とmswin32版で改行の取り扱いが違うことに
よるものだと思っていますが、3.が何故このような動きをするのかが分かり
ません。

mswin32版rubyでは明示的に"\r"をセパレータとして指定しても動作しない
のは仕様でしょうか?それとも私が何か勘違いをしているのでしょうか?

mswin32版rubyで上記の処理をする場合のよい方法があれば教えていただけ
ればと思います。よろしくお願いいたします。

In This Thread

Prev Next