[Dave Baldwin <dave.baldwin / 3dlabs.com>, 2004-05-20 16.08 CEST]
> This behaviour has rather surprised me:
> 
> file a.rb
> 	a = 10
> 
> file b.rb
> 	require "a.rb"
> 	puts a
> 
> dave 123% ruby b.rb
> b.rb:2: undefined local variable or method `a' for main:Object 
> (NameError)
> 
> dave 124% ruby -v
> ruby 1.8.1 (2003-10-31) [powerpc-darwin]
> 
> Using  $a fixes this but I don't want to do this or  I could join the 
> two files at run time and eval them.
> 
> I didn't expect the scope of a to be private to a.rb and can find no 
> mention in pickaxe about this.

If I'm not mistaken, scopes for local variables are created by files,
class/module and method definitions, and blocks.

They don't nest, except for blocks.

For your problem, you can use a constant, or use 'a=nil;
eval(File.read("a.rb")); p a', etc.

--