irb> puts(line) while line = gets
this is test line
NameError: undefined local variable or method `line’ for main:Object
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!!!