"chomping" an array at read time


#1

Team,

ruby -v === ruby 1.8.2 (2004-12-25) [powerpc-aix4.3.3.0]

Please don’t laugh at my simplistic coding “techniques?”

I am reading a file which contains 1041 one token records into an array:

f_lus = File.open("/file_name", “r”)

lus = Array.new
lus = File.read("/file_name")

When I print the size of the array lus it shows: 14377.

So I figured that this has to do with the end of line chars at the end
of
each record/token. However, if you have 1 nl char per record the size
should
be twice the number of records or 2082 and not 14,377.

I went ahead and created a new array as follows, from the old array in
the
same script:

i = 0
newArray = Array.new
lus.each do |lu|
newArray[i] = lu
i += 1
end

Now when I puts the size of array newArray it prints 1041 correctly.

What is happening here, please?
Second, is there a way to chomp a record as it is read into the array?

Thank you

Victor


#2

On Jan 9, 2006, at 9:44 AM, Victor R. wrote:

f_lus = File.open("/file_name", “r”)

lus = Array.new
lus = File.read("/file_name")

Right here you are createing a new arrau called lus. then you destroy
it and overwrite it with a file handle. Please try this instead:

ezra:~ ez$ cat test.txt
12
324
46
23
dgs
fh
asf
fh
dsg

lus = File.open(“test.txt”) {|f| f.readlines}

p lus
#=> [“12\n”, “324\n”, “46\n”, “23\n”, “dgs\n”, “fh\n”, “asf\n”, “fh
\n”, “dsg\n”]

Cheers-
Ezra


#3

On Jan 9, 2006, at 11:53 AM, Ezra Z. wrote:

lus = File.open(“test.txt”) {|f| f.readlines}

Or just:

lus = File.readlines(“test.txt”)

James Edward G. II


#4

On Jan 9, 2006, at 9:59 AM, James Edward G. II wrote:

On Jan 9, 2006, at 11:53 AM, Ezra Z. wrote:

lus = File.open(“test.txt”) {|f| f.readlines}

Or just:

lus = File.readlines(“test.txt”)

James-

When you do that does it close the file handle as well? I was just

using the block to make sure the file handle gets closed. Are there
certain actions that will close the handle by themselves and others
that won’t?

Thanks-
-Ezra


#5

Thank you both.

Victor


#6

On Jan 9, 2006, at 12:28 PM, Ezra Z. wrote:

James-

When you do that does it close the file handle as well? I was just
using the block to make sure the file handle gets closed. Are there
certain actions that will close the handle by themselves and others
that won’t?

Well, there’s no way I know of to get at the file handle used here,
so I sure hope it’s closed. I would argue that it’s a bug if it
isn’t. :slight_smile:

James Edward G. II