From: Tim Wolak Date: 2008-05-27T23:51:15+09:00 Subject: n00b question Can someone explain to me why my script is printing the key to my hash twice? I need it to print the key then the value on the first iteration and on the second iteration it should only print the value. I am getting information from two files, the account numbers and balances and displaying account number, yesterday balance, today balance and the difference. Account = Struct.new(:account_number, :balance_yesterday, :balance_today) do def difference balance_today - balance_yesterday end def to_s "#{account_number}\t#{balance_yesterday}\t#{balance_today}\t#{difference}\n" end end class SktyFut attr_reader :acct def initialize(filename) @acct = File.new(filename, "r") end def future_data @sktylist = Hash.new(0) @acct.each do |list| office = list[21..23] # => if office == "RPT" next else acctnum = list[24..28] end lv = list[217..230] is_negative = list[215,1] == "-" value = lv.to_f/100 value = -value if is_negative # Add vales to hash @sktylist[acctnum] += value end return @sktylist end end Dir.chdir("/Users/twolak") post = SktyFut.new("FutBalances20080507.txt") a = post.future_data #puts a pre = SktyFut.new("FutBalances20080506.txt") b = pre.future_data #puts b my_hash = Hash.new {|h,k| h[k] = Account.new(k)} a.each do |acc_nr, balance| my_hash[acc_nr].balance_yesterday = balance end b.each do |key, balance| my_hash[key].balance_today = balance end g = my_hash.to_s.sort puts g (the math will be wrong here as I have to take out info for security) 700700 1854.54 5652.05 3237970.2 701701 654.18 654.18 0.0 702702 99.07 99.07 0.0 -- Posted via http://www.ruby-forum.com/.