> 
> Because eval creates a new nested scope rather than sharing the
> enclosing scope.
> 
> Variable visibility between nested scopes is like a one-way mirror:
> you can manipulate variables created in a parent scope but you can not
> see or manipulate variables created in a 'child' scope.

Ok, I see that now, good to know.  Now I have another question.  I want 
to be able to create an arbitrary number of 'clean' bindings in which I 
can run ruby code.  Basically I want the user to be able to supply an 
unspecified number of ruby files, all of which will get run, and not 
have to worry about namespace collisions.  Additionally I want access to 
the scopes that those files were executed in after they are done.  I 
know I can create a binding from my current scope, but if I put anything 
in it, it can get modified when I do my_binding.eval.

In python this was quite simple by passing clean dictionaries to the 
exec statement, but perhaps I will have to rethink my design :(

thanks,
-Jonathan
-- 
Posted via http://www.ruby-forum.com/.