Robert Klemme
6/6/2007 12:18:00 PM
On 06.06.2007 13:08, dblack@wobblini.net wrote:
> Hi --
>
> On Wed, 6 Jun 2007, Trochalakis Christos wrote:
>
>> Hello there,
>>
>> I wan't to extract all the words from a file and so i wrote the
>> following code:
>>
>> file = ARGV[0]
>> File.open('output','w') {|f|
>> IO.read(file).scan(/\w+/).each{|w| f.print w}
>> }
>>
>> The problem with this code is that it stores all the words in an array
>> which is not so good in terms of efficiency.
>> Is there a better way to do it?
>> Something like IO.read(file).each_scan { foo }
>
> You could do something like this (untested, and reversing your logic
> somewhat):
>
> File.open(file).each {|line| f.print(line.scan(/\w+/)) }
>
> (You might want to join them with a space or something so they don't
> all run together.)
You're not closing the IO. I know it's not an issue for a small script
but...
I'd do this:
ARGF.each {|line| puts line.scan /\w+/}
:-)
Kind regards
robert