From: William James Date: 2007-09-18T04:50:06+09:00 Subject: Re: Newbie: what's Ruby idiom for word-by-word input? On Sep 17, 1:00 pm, Alex Shulgin wrote: > On Sep 17, 6:19 pm, William James wrote: > > > > > Awk is a very popular tool for text processing, but there is no > > way to make it treat a sequence of whitespace characters as a > > record-separator. So in awk, as in Ruby, text is almost always > > read a line at a time. > > I thought Ruby is not just a text processing tool, but a general > purpose programming language. You thought correctly. But when you talk about reading a word at at time from a text file, you're talking about text processing. The point is that languages (including Ruby) that were designed to be very good at processing text usually read a line at a time, not a word at a time. (A language that is very good at processing text can still be a general purpose language.) Reading a word at a time seems to me to be odd and unnecessary, and I do a lot of text processing. However, here's one way to do it. (It would be a lot more efficient to read by lines.) class IO def get_word word = nil while c = self.read(1) if c =~ /\s/ break if word else word||="" word << c end end word end end File.open('data'){|file| while w = file.get_word p w end }