Puts vs. write for writing to a file

I've done some googling, some looking in the pickaxe(2) book (using the
index), and some experimenting in irb, but I can't readily see the difference
between puts and write (except that write doesn't work in all cases in irb:)

irb(main):044:0> write "\nmorF\n\n"
NoMethodError: undefined method `write' for main:Object

So what is the difference (specifically for the case of writing to a file)
and/or when should I use one vs. the other?

Randy Kramer

Randy Kramer wrote:

I've done some googling, some looking in the pickaxe(2) book (using the index), and some experimenting in irb, but I can't readily see the difference between puts and write (except that write doesn't work in all cases in irb:)

irb(main):044:0> write "\nmorF\n\n"
NoMethodError: undefined method `write' for main:Object

So what is the difference (specifically for the case of writing to a file) and/or when should I use one vs. the other?

On a File object (actually, they're defined on IO), write just writes the string given to the file unchanged. IO#puts adds a newline at the end of the string if there isn't one already.

···

--
Alex

Ahha, thank you very much!

(Now, knowing that, I can see it in the pickaxe-- I guess there were too many
other wording differences between the two for me to quickly spot the
significant (for me) difference. For example, puts (on page 512) is
described in terms of writing an object, while write (page 515) is described
in terms of writing a string.)

Randy Kramer

···

On Tuesday 16 October 2007 08:31 am, Alex Young wrote:

On a File object (actually, they're defined on IO), write just writes
the string given to the file unchanged. IO#puts adds a newline at the
end of the string if there isn't one already.

Furthermore puts formats array instances as follows

  array_instance.join("\n").

Robert

···

On 10/16/07, Alex Young <alex@blackkettle.org> wrote:

Randy Kramer wrote:
> I've done some googling, some looking in the pickaxe(2) book (using the
> index), and some experimenting in irb, but I can't readily see the difference
> between puts and write (except that write doesn't work in all cases in irb:)
>
> irb(main):044:0> write "\nmorF\n\n"
> NoMethodError: undefined method `write' for main:Object
>
> So what is the difference (specifically for the case of writing to a file)
> and/or when should I use one vs. the other?
>
On a File object (actually, they're defined on IO), write just writes
the string given to the file unchanged. IO#puts adds a newline at the
end of the string if there isn't one already.

--
what do I think about Ruby?
http://ruby-smalltalk.blogspot.com/

I guess the next question, then, is "What's the difference between print
and write for writing to a file?"

Trying to answer my own question with irb, I see that a successful write
has a return value equal to the number of characters it writes to the
file, while a successful print returns nil. Is that the only difference
in a file writing context?

···

On Tue, Oct 16, 2007 at 09:31:27PM +0900, Alex Young wrote:

Randy Kramer wrote:
>I've done some googling, some looking in the pickaxe(2) book (using the
>index), and some experimenting in irb, but I can't readily see the
>difference between puts and write (except that write doesn't work in all
>cases in irb:)
>
>irb(main):044:0> write "\nmorF\n\n"
>NoMethodError: undefined method `write' for main:Object
>
>So what is the difference (specifically for the case of writing to a file)
>and/or when should I use one vs. the other?
>
On a File object (actually, they're defined on IO), write just writes
the string given to the file unchanged. IO#puts adds a newline at the
end of the string if there isn't one already.

--
CCD CopyWrite Chad Perrin [ http://ccd.apotheon.org ]
Isaac Asimov: "Part of the inhumanity of the computer is that, once it is
completely programmed and working smoothly, it is completely honest."