From: Shinji Miura Date: 2002-10-28T21:29:53+09:00 Subject: [ruby-list:36223] Re: ARGFを2回読み出したい場合について 三浦です。 From: nobu.nakada@nifty.ne.jp Subject: [ruby-list:36221] Re: ARGFを2回読み出したい場合について Date: Mon, 28 Oct 2002 18:27:48 +0900 > rewindする時点では既にfooを読み終っているので、次のファイルであ > る標準入力が対象になります。ttyに対するseekはシステム依存ですが、 > linuxでは先に書いた通りESPIPEになりました。Solarisではエラーに > ならずにSTDINの入力待ちになるようです。 > > > 標準入力を使用した場合はgetsでエラーになります。 > > > > $ruby test.rb < foo > > test.rb:1:in `gets': Bad file descriptor(Errno:EBADF) > > これもシステム依存のようです。 > なるほど…私はLinuxを使っているのですが、スクリプトの内部で ARGFを書き換える処理を入れずに % ruby test.rb < foo とし、標準入力をディスク上のファイルにした場合、エラーは出ずに 二度読み込むことに成功しました。 % ruby test.rb とし、標準入力がキーボードのままの場合はエラーが 発生しました。確かにこの方法では環境やパラメータによって 色々と癖があるのでよろしくないですよね。 結局のところ新井さんのおっしゃるように ARGFをdupしておいて一度読み込んだ後にdupしておいた もので置き換える方法がベストかも知れません。 -------------------------------------------------------------- 「三浦真磁」 snj@users.sourceforge.jp