On 24 Aug 2001 11:40:56 +0900, Dave Thomas wrote: > addrFields = ["First Name", "Last Name", "Phone Number"] > addrData = [] > loop do > addrFields.each do |prompt| > print "\n\t#{prompt}: " * line = gets * break if !line || line == "END\n" * addrData << getLine.chop Did you mean "line" instead of "getLine"? I think this is a bit nicer: line = gets ? $_.chomp : "END" break if line == "END" addrData << line > end > break if addData.size < addFields.size > aBook.puts addrData.join("\t") > addrData.clear > end While I cringe at breaking twice, this version does have less conceptual overhead than any alternatives I can think of.