Forum: Ruby Beginners Question

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.
Joe Q. (Guest)
on 2005-12-29 17:18
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
James G. (Guest)
on 2005-12-29 17:24
(Received via mailing list)
On Dec 29, 2005, at 9:18 AM, joe quimby wrote:

>
> Does anybody understand this ?
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 G. II
Joe Q. (Guest)
on 2005-12-29 17:28
Wow that was fast. Thanx a lot
unknown (Guest)
on 2005-12-29 17:33
(Received via mailing list)
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
removed_email_address@domain.invalid

"Ruby for Rails", from Manning Publications, coming April 2006!
http://www.manning.com/books/black
Daniel S. (Guest)
on 2005-12-31 13:06
(Received via mailing list)
joe quimby wrote:
>
>
> Thanx
> Joe
>

Try this instead:

   while input = $stdin.gets
     puts input
   end


Cheers,
Daniel
Wybo D. (Guest)
on 2005-12-31 14:18
(Received via mailing list)
On Sat, 31 Dec 2005, Daniel S. wrote:

> 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'
This topic is locked and can not be replied to.