> > 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/.