Hello all,
I'm relatively new to ruby and I think I've found a bug. It doesn't
seem to be in my code.
I written this test script:
# test.rb #####################
File.open("blaat.txt","w") do |f|
f.write "test\r\n"
f.write "test\r"
f.write "test\n"
end
blaat.txt (18 Bytes)
···
############################
And it produces unexpected results. It seems to insert a "\r" before
every "\n". I have included the result of this script on my computer.
I'm running Windows XP SP2 and ruby 1.8.5.
Does anyone know what the problem could be and how to fix it?
Wouter Smeenk
It's not a bug.
On Windows, "\n" evaluates to a carriage return and a line feed, what
you may be used to calling "\r\n". If you open blaat.txt in SciTE (or
any similar text editor) and view the ends of lines (View -> End of
Line), you'll see.
So what's happening is that f.write "test\r\n" is writing a carriage
return, then "\n" which is a carriage return and a line feed.
···
On Feb 7, 5:48 am, "Wouter Smeenk" <woutersme...@gmail.com> wrote:
Hello all,
I'm relatively new to ruby and I think I've found a bug. It doesn't
seem to be in my code.
I written this test script:
# test.rb #####################
File.open("blaat.txt","w") do |f|
f.write "test\r\n"
f.write "test\r"
f.write "test\n"
end
############################
And it produces unexpected results. It seems to insert a "\r" before
every "\n". I have included the result of this script on my computer.
I'm running Windows XP SP2 and ruby 1.8.5.
Does anyone know what the problem could be and how to fix it?
Wouter Smeenk
[blaat.txt]test
test test
...and if you don't like the behaviour, use File.open('xxxx', 'wb') -
notice the 'b'.
Or specify mode as IO::WRONLY | IO::BINARY
The same works for Python as well.
···
On 2/7/07, Chris Shea <cmshea@gmail.com> wrote:
On Feb 7, 5:48 am, "Wouter Smeenk" <woutersme...@gmail.com> wrote:
> Hello all,
>
> I'm relatively new to ruby and I think I've found a bug. It doesn't
> seem to be in my code.
>
> I written this test script:
>
> # test.rb #####################
> File.open("blaat.txt","w") do |f|
> f.write "test\r\n"
> f.write "test\r"
> f.write "test\n"
> end
> ############################
>
> And it produces unexpected results. It seems to insert a "\r" before
> every "\n". I have included the result of this script on my computer.
>
> I'm running Windows XP SP2 and ruby 1.8.5.
>
> Does anyone know what the problem could be and how to fix it?
>
> Wouter Smeenk
>
> [blaat.txt]test
> test test
It's not a bug.
On Windows, "\n" evaluates to a carriage return and a line feed, what
you may be used to calling "\r\n". If you open blaat.txt in SciTE (or
any similar text editor) and view the ends of lines (View -> End of
Line), you'll see.
So what's happening is that f.write "test\r\n" is writing a carriage
return, then "\n" which is a carriage return and a line feed.