From: Xavier Noria Date: 2007-01-02T03:44:37+09:00 Subject: Re: OS-Specific "\n" Interpolation? On Jan 1, 2007, at 7:20 PM, Rob Muhlestein wrote: > Coming from Perl and C I have come to expect "\n" to be translated > differently depending on OS--especially when doing sockets protocol > programming. Ruby *appears* to be subject to this same OS/clib > translation issue which is so often overlooked. Was hoping Ruby > shielded the average user from this. Has anyone else had any > experience > confirming or denying this? I've written up the details in a blog > post: > > http://rob.muhlestein.net/2007/01/watch-those-newlines-ruby-no- > different.html In Ruby "\n" is a string of lentght 1 in all systems, and it is equal to "\012" in all platforms. This works as in Perl and other languages that inherit from C the way newlines are handled[*], except it is simpler because it does not have the MacPerl exception. In these languages you write portable sockets programming by binmodeing the socket and hard-coding "\015\012" or whatever. As a side note, by default modern Perl performs newlines transaltion on CRLF platforms via the custom PerlIO I/O layer, the C Ruby interpreter delegates this to stdio. -- fxn [*] http://www.onlamp.com/pub/a/onlamp/2006/08/17/understanding- newlines.html