From: Peter Hicks Date: 2011-05-04T07:58:04+09:00 Subject: Iterating over an Array of Hashes All, When iterating over an Array of Hashes repeatedly, the 'each' method appear to pass a reference to - not a copy of - each element in the array. Is there a way to take a *copy* of the data, rather than a reference to the data, so that any changes to each hash aren't? Explaining it another way - I have code similar to the following: a = [ '2011-01-01', '2011-01-02', '2011-01-03' ] b = [ { :x => "foo" }, { :x => "bar" }, { :x => "baz" } ] a.each do |a_item| puts a_item b.each do |b_item| b_item[:date] = a_item # DO SOMETHING WITH B end end What I want to do within the b.each loop is work on a *copy* of each element of b, such that if I mess around with it, the changes are lost when when the loop exits. What is the magic I am missing? Peter