Beginners Question

Hello Folks,

I am trying to learn ruby, so i wrote some simple scripts.
But the following script does not work as expected:

#!/usr/bin/ruby

while gets != nil
  print $_
end

if i call 'echo.rb' (without any parameters) from my cygwin shell, the
scripts does what i expect it to do. It reads and returns the input.
But if i call it with any parameters, like

  echo.rb anything

i get a error message saying : '... `gets': No such file or directory -
12 (Errno::ENOENT)...'

Does anybody understand this ?

Thanx
Joe

···

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

gets() reads from the files given as command-line arguments, or STDIN, if none were given. So in your example above, "anything" is expected to be the path to a file that will be read.

Just FYI, your example is also a little Perlish. Us Ruby guys generally write that as:

   ARGF.each_line do |line|
     puts line
   end

Hope that helps.

James Edward Gray II

···

On Dec 29, 2005, at 9:18 AM, joe quimby wrote:

Hello Folks,

I am trying to learn ruby, so i wrote some simple scripts.
But the following script does not work as expected:

#!/usr/bin/ruby

while gets != nil
  print $_
end

if i call 'echo.rb' (without any parameters) from my cygwin shell, the
scripts does what i expect it to do. It reads and returns the input.
But if i call it with any parameters, like

  echo.rb anything

i get a error message saying : '... `gets': No such file or directory -
12 (Errno::ENOENT)...'

Does anybody understand this ?

joe quimby wrote:

Hello Folks,

I am trying to learn ruby, so i wrote some simple scripts.
But the following script does not work as expected:

#!/usr/bin/ruby

while gets != nil
  print $_
end

if i call 'echo.rb' (without any parameters) from my cygwin shell, the scripts does what i expect it to do. It reads and returns the input.
But if i call it with any parameters, like

  echo.rb anything

i get a error message saying : '... `gets': No such file or directory - 12 (Errno::ENOENT)...'

Does anybody understand this ?

Thanx
Joe

Try this instead:

   while input = $stdin.gets
     puts input
   end

Cheers,
Daniel

Wow that was fast. Thanx a lot

···

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

joe quimby wrote:
Hello Folks,

I am trying to learn ruby, so i wrote some simple scripts.
But the following script does not work as expected:

#!/usr/bin/ruby

while gets != nil
print $_
end

you could also have said:
  #!/usr/bin/ruby
  print while gets

if i call 'echo.rb' (without any parameters) from my cygwin shell, the
scripts does what i expect it to do. It reads and returns the input.
But if i call it with any parameters, like

echo.rb anything

i get a error message saying : '... `gets': No such file or directory -
12 (Errno::ENOENT)...'

Does anybody understand this ?

apparently you typed:

echo.rb 12

If there are arguments, ruby interprets those as the names of files to
be used (after concatenation) as standard input. But there was no file '12'

···

On Sat, 31 Dec 2005, Daniel Schierbeck wrote:

--
Wybo

Hi --

···

On Fri, 30 Dec 2005, joe quimby wrote:

Wow that was fast. Thanx a lot

A quick followup: You can do:

   $stdin.gets

which will force (in the case of your example) keyboard input.

David

--
David A. Black
dblack@wobblini.net

"Ruby for Rails", from Manning Publications, coming April 2006!