Beginners Question

Discussion in 'Ruby' started by joe quimby, Dec 29, 2005.

  1. joe quimby

    joe quimby Guest

    Hello Folks,

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


    while gets != nil
    print $_

    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, Dec 29, 2005
    1. Advertisements

  2. 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

    Hope that helps.

    James Edward Gray II
    James Edward Gray II, Dec 29, 2005
    1. Advertisements

  3. joe quimby

    joe quimby Guest

    Wow that was fast. Thanx a lot
    joe quimby, Dec 29, 2005
  4. joe quimby

    dblack Guest

    Hi --

    A quick followup: You can do:


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


    David A. Black

    "Ruby for Rails", from Manning Publications, coming April 2006!
    dblack, Dec 29, 2005
  5. Try this instead:

    while input = $stdin.gets
    puts input

    Daniel Schierbeck, Dec 29, 2005
  6. joe quimby

    Wybo Dekker Guest

    you could also have said:
    print while gets
    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'
    Wybo Dekker, Dec 31, 2005
    1. Advertisements

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments (here). After that, you can post your question and our members will help you out.