From: Marc-Andre Lafortune Date: 2009-10-26T11:22:44+09:00 Subject: [ruby-core:26307] Re: IO.foreach (and friends) effect on $< and $. $. is on my "list of bugs to file". I believe there are bugs on both 1.9 and 1.8, but different ones. Or at least the documentation is wrong. Here's what I had written so far, without finishing looking into it: ---------- I believe there is a bug in trunk with $. but I am not certain how to resolve it. Is there an official documentation for $. (and all other global variables) in rdoc? The Ruby Prog Language (Flanagan & Matz) states: The number of the last line read from the current input file. Equivalent to ARGF.lineno. I find "current input file" to be very imprecise. Is that the file currently being read from ARGF? or the last IO read from? Currently, it's a bit of both. It's usually the last read io: $ rubydev -e "ARGF.gets; f=File.new '/etc/passwd'; 4.times{f.gets}; p $., ARGF.lineno" /etc/hosts 4 1 Clearly, it is not equivalent to ARGF.lineno in this case. On the other hand, it's affected by ARGF.lineno= (contrary to any other IO#lineno=), and vice-versa: $ rubydev -e "ARGF.lineno = 42; p $.; $. = 56; p ARGF.lineno" 42 56