Open file that its name given by STDIN.gets

Hi all. I’m following the Zed S.'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:inopen’
from test.rb:9:in `’

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

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 Sunday 03 February 2013 aref aslani wrote

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

filename = STDIN.gets.chomp

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

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!

Am 02.02.2013 23:00, schrieb aref aslani:

Hi all. I’m following the Zed S.'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