From: Marc Heiler Date: 2011-10-13T15:08:39+09:00 Subject: Re: translation from Python Always remember that while python has sane syntax (compared to perl and php), its inner logic does not work in a 1:1 translation into ruby code. So you must adapt it to fit the ruby model. But usually this is trivial and straight forward. The first thing you should do is use the same method name but adapt it to ruby. Something like: def getwordcounts(url): Would then become: def getwordcounts(url) end Next thing is to understand your data structures. I do not know python really but something like this here: wc[word]+=1 Seems to update the dictionary, at the keyword word position, by + 1. With hash.default = you can specify a default value for your keys in a hash, in ruby. Whenever you see a loop from python, like "for x in y", the ruby way is usually to use .each instead on an enumerator. array.each do |line| # do something here end Or shorter, rather than do/end, to use the {} block syntax. "I'm pretty vague about "#HERE!" parts." I don't know what the #HERE! means either. But it is clearly a comment. Perhaps the one who wrote so wanted to jump from #HERE! to #HERE! ? ""wc" will be an array containing the words picked up...?" I believe wc typically is short for "word count". And with wc[word]+=1 you count the word, kind of. :D For ruby, I tend to use something like this to count the words in a string: class String # ========================================================================= # # === word_count # Counts word frequencies. Returns a hash. # Usage examples: # x = %{ Dogs cat? cat? cat dog dog dog cat dog eagle dog dogs}.word_count # => { "cat"=>2, "dogs"=>2, "eagle"=>1, "dog"=>5, "cat?"=>2 } # ========================================================================= # def word_count hash = Hash.new(0) downcase.scan(/\w+\??/) { |word| hash[word] += 1 } return hash end end (Of course you can also just use a method instead of extending class String, and pass the string to that method as argument.) "there are "word" and "words" in the code but "word" does not appear defined although it's used locally" But it looks as if word is defined: for word in words: See? The word variable appears there. In ruby, this would become something like this here: array.each { |word| } -- Posted via http://www.ruby-forum.com/.