From: "austin (Austin Ziegler)" Date: 2022-07-15T19:17:36+00:00 Subject: [ruby-core:109225] [Ruby master Bug#18909] ARGF.readlines reads more than current file Issue #18909 has been updated by austin (Austin Ziegler). JohanJosefsson (Johan Josefsson) wrote in #note-9: > There is nothing in the introductory paragraphs on ARGF that says that the input files must be treated as a concatenated file. On the contrary, there is this 'current file' concept that is mentioned in several places. I don���t agree with your assessment here. I just copied this from the Ruby 3.1 documentation snapshot that I use from Dash (mirroring https://ruby-doc.org/core-3.1.2/ARGF.html): > ARGF is a stream designed for use in scripts that process files given as command-line arguments or passed in via STDIN. > > The arguments passed to your script are stored in the ARGV Array, one argument per element. ARGF assumes that any arguments that aren't filenames have been removed from ARGV. For example: > > ``` > $ ruby argf.rb --verbose file1 file2 > > ARGV #=> ["--verbose", "file1", "file2"] > option = ARGV.shift #=> "--verbose" > ARGV #=> ["file1", "file2"] > ``` > > You can now use ARGF to work with a concatenation of each of these named files. For instance, ARGF.read will return the contents of file1 followed by the contents of file2. Yes, it���s the third paragraph, but it is fairly clear. On the other hand, `#each_line` and `#inplace_mode=` make it clearer that if you don���t force a full *read* (`#readlines` or `#read`), you can have it work properly with the in-place mode. I would suggest that what you want is perhaps an added function, `#each_file`, that allows you to loop over each file separately���that would make a fairly good feature request, IMO. ---------------------------------------- Bug #18909: ARGF.readlines reads more than current file https://bugs.ruby-lang.org/issues/18909#change-98362 * Author: JohanJosefsson (Johan Josefsson) * Status: Closed * Priority: Normal * ruby -v: ruby 2.3.1p112 (2016-04-26) [x86_64-linux-gnu] * Backport: 2.7: REQUIRED, 3.0: REQUIRED, 3.1: REQUIRED ---------------------------------------- The docuentation says that ARGF.readlines: *Reads ARGF's current file in its entirety* , but this is what happens: `$ cat fileA A $ cat fileB B $ ruby -e 'puts ARGF.readlines' fileA fileB A B` i.e. it reads both the current file and the next one (all files?). -- https://bugs.ruby-lang.org/ Unsubscribe: