irb> puts(line) while line = gets
this is test line
[EOF]
NameError: undefined local variable or method `line' for main:Object
        from (irb):1

The Pickaxe says on page 354 that unless the expression (on the left of 
the while) is not a block, then the loop gets executed ZERO or more 
times. So it has to evaluate the condition BEFORE the expression, which 
ought to assign a value to "line" (thus defining it).

This will work, but shouldn't be necessary:

line = nil
puts(line) while line = gets


Any insight would be much appreciated!!!

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