Open file that its name given by STDIN.gets

Hi all. I'm following the Zed Shaw's ruby tutorials.
in ex15 i've changed this line

filename = ARGV.first

to

filename = STDIN.gets

and this is the command line error:

→ ruby test.rb
test.rb

test.rb:9:in `initialize': No such file or directory - aref (Errno::ENOENT)

  from test.rb:9:in `open'
  from test.rb:9:in `<main>'

what is the problem?
P.S. the ruby file is attached.

Attachments:
http://www.ruby-forum.com/attachment/8102/Screen_Shot_1391-11-15_at_1.31.56_AM.png

···

--
Posted via http://www.ruby-forum.com/\.

STDIN.read ?

The read method reads data from the standard input, until it reaches the
end of the file. The EOF is produced by pressing Ctrl + D on Unix or Ctrl +
Z on Windows.

···

On Sat, Feb 2, 2013 at 2:00 PM, aref aslani <lists@ruby-forum.com> wrote:

Hi all. I'm following the Zed Shaw's ruby tutorials.
in ex15 i've changed this line

filename = ARGV.first

to

filename = STDIN.gets

and this is the command line error:

→ ruby test.rb
test.rb
> test.rb:9:in `initialize': No such file or directory - aref
(Errno::ENOENT)
  from test.rb:9:in `open'
  from test.rb:9:in `<main>'

what is the problem?
P.S. the ruby file is attached.

Attachments:

http://www.ruby-forum.com/attachment/8102/Screen_Shot_1391-11-15_at_1.31.56_AM.png

--
Posted via http://www.ruby-forum.com/\.

gets returns a string with a trailing newline. This means that, if you enter

test

as your file name, the variable filename will contain the string "test\n". You
can use String#chomp to remove it:

filename = STDIN.gets.chomp

I hope this helps

Stefano

···

On Sunday 03 February 2013 aref aslani wrote

Hi all. I'm following the Zed Shaw's ruby tutorials.
in ex15 i've changed this line

filename = ARGV.first

to

filename = STDIN.gets

and this is the command line error:

→ ruby test.rb
test.rb

> test.rb:9:in `initialize': No such file or directory - aref
> (Errno::ENOENT)

  from test.rb:9:in `open'
  from test.rb:9:in `<main>'

what is the problem?
P.S. the ruby file is attached.

Attachments:
http://www.ruby-forum.com/attachment/8102/Screen_Shot_1391-11-15_at_1.31.56_
AM.png

--
Posted via http://www.ruby-forum.com/\.

Hi all. I'm following the Zed Shaw's ruby tutorials.
in ex15 i've changed this line

filename = ARGV.first

to

filename = STDIN.gets

Please include short code snippets directly in the E-Mail
instead of using attachments!

The string returned from gets is always terminated by a newline
character that you need to remove:

filename = gets.chomp

···

Am 02.02.2013 23:00, schrieb aref aslani:

and this is the command line error:

→ ruby test.rb
test.rb

test.rb:9:in `initialize': No such file or directory - aref (Errno::ENOENT)

   from test.rb:9:in `open'
   from test.rb:9:in `<main>'

what is the problem?
P.S. the ruby file is attached.

Attachments:
http://www.ruby-forum.com/attachment/8102/Screen_Shot_1391-11-15_at_1.31.56_AM.png

--
<https://github.com/stomar/&gt;

filename = STDIN.gets.chomp

ِYou are right:)
that was the problem...
Thank you a lot Stefano :slight_smile:

···

--
Posted via http://www.ruby-forum.com/\.

Please include short code snippets directly in the E-Mail
instead of using attachments!

The string returned from gets is always terminated by a newline
character that you need to remove:

Thank you:) My problem has been solved!

···

--
Posted via http://www.ruby-forum.com/\.