list global variables in Lua files
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.

This is a very simple Lua program that list reports global variable usage in Lua files, based on static analysis.

It uses 'luac', the Lua compiler, and parses the bytecode listing. No other dependencies. Works with both Lua 5.1 and 5.2.

It builds on test/global.lua in the lua-5.1.4 distribution.

#Install Just copy globals.lua to somewhere in your PATH and make it executable. Or use luarocks:

luarocks install globals-lua


globals.lua <list of files to check>


$ globals.lua  test.lua 

     _G           : 9
     arg          : 9
     io           : 9
     ipairs       : 9
     os           : 82
 !!! prev_name    : 49 50 52s
 !!! s            : 20s 21 24 26
     string       : 24 26 53
     table        : 30 35 51 62 71
     tonumber     : 30

local _G,arg,io,ipairs,os,prev_name,s,string,table,tonumber
    = _G,arg,io,ipairs,os,prev_name,s,string,table,tonumber

  • Lines where a global is written to are marked with 's'
  • Globals not preloaded in Lua is marked with '!!!'
  • Last is a list of local declarations that you can paste to the top of the file in order to turn all global usages into locals.
  • Name of 'luac' can be overridden with environment variable LUAC

#See also A much more complete tool is luacheck, which also warns about unused locals. I my self use luacheck in combination with globals.lua.

Egil Hjelmeland, 2012; License MIT