ごとけんです In message "[ruby-list:19888] File#lineno" on 99/12/26, Yasushi Shoji <yashi / yashi.com> writes: >fileの行数を調べたいのですが、良い methodを見つけられません。 > >file = File.new('...') >file.seek 0, 2 >p file.lineno > >だと、0が返りますよね。これは、こういう物なんでしょうか? 気分的には >pointerがある行番号を返してほしいのですが‥‥。 たしかにマニュアルはそういう風にも読めますが、実際は、 file = open("foo") 10.times{file.gets} p file.lineno #=> 10 などのように gets や each など行単位のポインタ移動が行われな いと lineno は変わりません(seek や pos= は途中を読まないので)。 IO でなくて File なら、こんな感じでどうですか?? class File def line_number to = pos rewind buf = read(to).delete!("^\n") buf ? buf.size : 0 end end -- gotoken