Hello Travis, Thursday, February 20, 2003, 1:53:14 AM, you wrote: TW> # This is ran about a million times TW> h = Hash.new(0) TW> data.scan(iptok).each do |tok| TW> h[tok] += 1 TW> end are you heard about "sort|uniq" idiom? you can use such code: sorted_tokens = data.scan(iptok).sort #The following code pushes in arr pairs of token, count arr = [] prev_token = nil count = 0 sorted_tokens.each do |tok| if tok == prev_token count += 1 else arr << prev_token << count prev_token = tok count = 1 end end if count > 0 arr << prev_token << count end h = Hash[*arr] -- Best regards, Bulat mailto:bulatz / integ.ru