|
Kevin Baca wrote:
I must have been seeing things because now I am back home the code doesn't work? However your code does, however I for me I used a single underscore _G but your code used a double __G. The double did not work for me.I'm not sure why that's working for you. What you want is called a "sandbox". Search the archives for "sandbox" for some interesting discussions. Here is a simple example:s1 = "x = 42" c1 = loadstring( s1 ) e = setmetatable( {}, { __index = __G } ) setfenv( c1, e ) c1() =xnil=e.x42 -Kevin
#!/usr/local/bin/lua function compilestring( s ) e = setmetatable( {}, { __index = _G } ) c = loadstring( s ) setfenv( c, e ) return c end c1 = compilestring( "print(x)" ) c2 = compilestring( "x = 42" ) c3 = compilestring( "x = 19 print(x)" ) c1() c2() c1() c3() c1() [Lua]$ ./x.lua nil nil 19 nil [Lua]$ getting better, thanks for your help.