Gordon Hartley wrote: ... > Page 124 of Pickaxe (2nd Ed.) mentions that variables are not > propogated to the scope that loads/requires them, so is there any way > of referring to / accessing them? The approach I tend to use is in my "script" library: http://redshift.sourceforge.net/script/ Briefly, Script.load and Script.require still read and eval the file, but they return a module which contains the constants and methods defined at the top level in the file (and in any local files required by that file). So if you're willing to live with the following syntax ONE = Needed.new("1") or def one Needed.new("1") end then you can retrieve these values with something like Script.require(filename).const_get filename[0..-4].upcase or Script.require(filename).send filename[0..-4] It might even work out to just put a line of the form NEEDED = Needed.new("1") in each file and then retrieve it with Script.require(filename)::NEEDED (But probably I don't understand something about the rest of your program.) ... > eval_me = File.open(file_name).readlines.to_s More simply: eval_me = File.read(file_name) HTH.