On Sat, 20 Oct 2001, Julian Fitzell wrote:

> var_name = "myVar"
> eval "#{var_name} = 10"
> myVar			     => 10

Although that will work in IRB, it won't work in general, because
eval creates a new scope.  So this would work:

myVar = 1
var_name = "myVar"
eval "#{var_name} = 10"
myVar => 10

but if myVar isn't already defined it will only last for the scope of the
eval.

I can't think of any good way of getting that effect, but I will say that
in most cases, I would expect there to be a better way to solve the
problem.

On the other hand, if you're using instance variables instead of locals,
it should work fine:

var_name = "@myVar"
eval "#{var_name} = 10"
@myVar => 10

Globals ought to work too.

Avi

> On 20/10/2001 at 1:25 AM Andrew Cowan wrote:
>
> >I am somewhat new to Ruby, coming from about 10 years of Perl
> >programming,
> >6 professionally.
> >
> >In perl, it is easy to create new variables with variable names that are
> >defined in another variable. For example:
> >
> >$var_name = "myVar";
> >${"$var_name"} = 10;
> >
> >would define a new variable $myVar the value 10.
> >
> >Is there a way to do this in Ruby? I suspect there must be but haven't
> >been
> >able to figure this out yet.
> >
> >Thanks for any help you can offer!
> >
> >Andy
> >
> >______________________________________________________________________
> >Posted Via Uncensored-News.Com - Still Only $9.95 -
> >http://www.uncensored-news.com
> >   With NINE Servers In California And Texas - The Worlds Uncensored News Source
>
>
>
>