From: Peter Buckley Date: 2009-02-27T02:30:39+09:00 Subject: dynamic variable names or using a variable as another's name Hi- I've done some searching on this topic and it seems to be generally discouraged to use one variable's value as another variable's name (or part of it's name). People generally recommend a hash or array to answer this use case. I've seen these posted as "available but not recommended": eval("#{variable_name} = #[value}") or: self.instance_variable_set(:@var_name, value) or: x="myvar" myvar="hi" eval(x) -> "hi" I'm trying to write a short program and I'm thinking that I'm going in the wrong direction - can anyone give me some fresh ideas as an alternative to what I see as my "best solution?" I have string1, stringA (which won't be known till later) that is associated with string1, and then stringB and potentially stringC and stringD which are all associated with string1 and stringA. So I'm thinking that I want a hash, big_hash, with string1 as the key, and the value is another hash, string1_hash, with stringA as the key and the value is an array containing stringB,stringC,stringD. I realize I could name string1_hash anything, but I'm going to need multiple hashes as I iterate over a list of string1, string2, string3. I'd like big_hash to be somewhat permanent so I can re-use it elsewhere. I'm not looking for someone to solve the problem for me, but really just for other ideas beyond my clunky-semi-permanent data structure. Do I need to store these associated values in a database, rather than trying to build one out of these hashes? Is my direction of making big_hash semi-permanent a bad idea, and I should just keep re-using big_hash over and over as I iterate through my list of string1, string2, string3? As I'm asking the question I think that is the direction I'm going to try next, but I would still appreciate advice on this topic. TIA, Peter -- Posted via http://www.ruby-forum.com/.