Forum: Ruby Unable to write to file... (example from "pickaxe book", sec

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
John Maclean (Guest)
on 2006-01-19 12:28
(Received via mailing list)
Following the example from "pickaxe book", second edition, p128

#!/usr/bin/ruby
File.open("testfile", "r") do |file|
  while line = file.gets
    puts line
  end
end

produces
copy.rb:2:in `initialize': No such file or directory - testfile
(Errno::ENOENT)
        from copy.rb:2
HT de Beer (Guest)
on 2006-01-19 12:34
(Received via mailing list)
On Thursday 19 January 2006 11:49, John Maclean wrote:
> copy.rb:2:in `initialize': No such file or directory - testfile
> (Errno::ENOENT) from copy.rb:2

The problem is clear. You are trying to read a file which does not
exist. So,
to solve the `problem', you create a file named testfile, put some text
in
it, and there you go,
zdennis (Guest)
on 2006-01-19 12:34
(Received via mailing list)
John Maclean wrote:
> copy.rb:2:in `initialize': No such file or directory - testfile (Errno::ENOENT)
>         from copy.rb:2
>

John, you need the file named "testfile" to exist before you can run
that code. It can't open a file
if it doesn't exist!

Zach
John Maclean (Guest)
on 2006-01-19 12:58
(Received via mailing list)
Thanks! The light shines. So how can i -write- to a file using the code
below as an example?

On Thu, 19 Jan 2006 19:56:55 +0900
734b268ada1a4c295a0c4f47455af017?d=identicon&s=25 Mike F. (fletch)
on 2006-01-19 18:05
John Maclean wrote:
> Thanks! The light shines. So how can i -write- to a file using the code
> below as an example?

Open a file for writing

File.open( "infile", "r" ) | in |
  File.open( "outfile", "w" ) | out |
    while line = in.gets
      out.print line
    end
  end
end

See the docs for IO which explain all the mode flags ("r", "w", "a",
etc.).
98a99a727615dfffe04a65db0915dd55?d=identicon&s=25 Li C. (alex-osu3)
on 2006-11-03 18:24
Mike Fletcher wrote:
> John Maclean wrote:
>> Thanks! The light shines. So how can i -write- to a file using the code
>> below as an example?
>
> Open a file for writing
>
> File.open( "infile", "r" ) | in |
>   File.open( "outfile", "w" ) | out |
>     while line = in.gets
>       out.print line
>     end
>   end
> end
>
> See the docs for IO which explain all the mode flags ("r", "w", "a",
> etc.).

Do you think this script work?

Li
734b268ada1a4c295a0c4f47455af017?d=identicon&s=25 Mike F. (fletch)
on 2006-11-03 20:34
Li Chen wrote:
> Mike Fletcher wrote:
>> John Maclean wrote:
>>> Thanks! The light shines. So how can i -write- to a file using the code
>>> below as an example?
>>
>> Open a file for writing
>>
>> File.open( "infile", "r" ) | in |
>>   File.open( "outfile", "w" ) | out |
>>     while line = in.gets
>>       out.print line
>>     end
>>   end
>> end
>>
>> See the docs for IO which explain all the mode flags ("r", "w", "a",
>> etc.).
>
> Do you think this script work?

As is no (I blame lack of caffeine and/or sleep); but with "do" inserted
in the right two places and the reserved word "in" replaced with
something that's not a reserved word ( say "inf" ) it works just fine.

One should take all example code posted in haste to mailing lists with a
grain of salt.
Marcel Ward (Guest)
on 2006-11-07 10:59
(Received via mailing list)
On 03/11/06, Li Chen <chen_li3@yahoo.com> wrote:
> > end
>
> Do you think this script work?

It fails because "in" is a reserved word in Ruby and cannot be used as
a variable name.  Try changing the two instances of "in" to "inp" and
it will work.
This topic is locked and can not be replied to.