From: "Emil Enemærke" Date: 2012-01-18T18:46:13+09:00 Subject: Re: global array Hi, On 16 Jan, 2012, at 16:19 , Robert Klemme wrote: > On Mon, Jan 16, 2012 at 3:17 PM, Emil Enemærke wrote: >> Hi, >> >> Im trying to make an array a global array, but I cannot make it work. > > "server" references a Hash. > >> Here is what I have: >> ------------ >> hostname=server1 >> server = Hash.new { |hash, key| hash[key] = [] } >> service_name="service name" >> service=service1 >> >> if server.key?(hostname) > > Will likely return false because the Hash is empty initially. That was the intention, if the hash is empty create it. > >> server[hostname]=Hash.new { |hash, key| hash[key] = [] } >> server[hostname]["service_name"]=Array.new >> server[hostname]["service_name"]="service#{service_counter}" >> server[hostname]["service_name"]=[x,x,x] > > The three lines above all overwrite the same entry. That's almost > certainly not what you want. > >> end >> ----------------- >> >> I have tried with >> $server[hostname]["service_name"]=[x,x,x] >> $server[hostname]["service_name"]=Array.new >> >> but that does not work... Any help is appreciated. > > I am not 100% sure what you intend but I think you might just want > > server = Hash.new { |hash, key| hash[key] = {} } > server[hostname]["service_name"] = ["service#{service_counter}", [x,x,x]] > That is a much more elegant solution than mine, thanks. But this does not solve my problem, I have the hash created within a loop but are not able to access to array from outside that loop, due the hash not being global. So how can I make the server[hostname]["service_name"] = ["service#{service_counter}", [x,x,x]] a global variable? Kind Regards Emil