Different behavior of '$,' output separator in Ruby 1.9

A

Alex DeCaria

In switching to Ruby 1.9 from 1.8 I notice that the behavior of the '$,'
output separator has changed. In Ruby 1.9 the output separator is
placed after a newline character, but this didn't happen with Ruby 1.8.
Using the following code:

------------
$, = ', '

data = [['a', 'b', 'c'], ['1', '2', '3'], ['x', 'y', 'z']]

file_out = File.new("test.csv", "w")

data.each do |elem|
file_out.print elem[0], elem[1], elem[2], "\n"
end

file_out.close
---------------

and running with Ruby 1.8 produces a file that contains

a, b, c,
1, 2, 3,
x, y, z,

but with Ruby 1.9 the contents of the file look like

a, b, c,
, 1, 2, 3,
, x, y, z,
,

Is this an intentional change of behavior?
--Alex
 
C

Caleb Clausen

In switching to Ruby 1.9 from 1.8 I notice that the behavior of the '$,'
output separator has changed. In Ruby 1.9 the output separator is
placed after a newline character, but this didn't happen with Ruby 1.8.

That doesn't seem right.
 
D

David Springer

Alex,

If you make a few minor modifications:
-------------------------------------------
$, = ', '
$\ = "\n" ### output record separator ###

data = [['a', 'b', 'c'], ['1', '2', '3'], ['x', 'y', 'z']]

file_out = File.new("test.csv", "w")

data.each do |elem|
file_out.print elem[0], elem[1], elem[2] ### no newline FIELD ###
end

file_out.close
-------------------------------------------

then you will get what you want in Ruby 1.9.
a, b, c,
1, 2, 3,
x, y, z,
I have not tried it in Ruby 1.8.

Looks like it is adding the output field separator AFTER the newline
FIELD.
 
R

Robert Klemme

That doesn't seem right.

I agree. 1.9 writes one field separator too much. This must be a bug.

Alex, separators are intended to be used a tad differently. You would
rather set the output record separator as well:

robert@fussel:~$ ruby -e '$,="@";$\="NL\n";print 1,2,3'
1@2@3NL
robert@fussel:~$

Kind regards

robert
 
A

Alex DeCaria

Should I submit a bug report, or do you think it will be eventually
noticed on this forum?
--Alex
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,756
Messages
2,569,534
Members
45,007
Latest member
OrderFitnessKetoCapsules

Latest Threads

Top