The snippet illustrates my question.

a={}
b={}
a["alpha"]=b["alpha"]=[]
a["alpha"]<<23
b["alpha"]<<100
puts a["alpha"]
puts b["alpha"]

Here a["alpha"] and b["alpha"] both contain an array of [23,100].
Why??

If I remove the multiple assignment,
a={}
b={}
a["alpha"]=[]
b["alpha"]=[]
a["alpha"]<<23
b["alpha"]<<100
puts a["alpha"]
puts b["alpha"]


a["alpha"] contains 23 and b["alpha"] contains 100 as I expected.