为什么 Lua 的 loadstring() 函数在演示网站上无法正常工作?

我正在尝试测试 Lua 的 loadstring 函数。

这个例子直接来自 Lua 文档:

f = loadstring("i = i + 1")

但是,当我在这里运行它时:

https://www.lua.org/cgi-bin/demo

我得到了以下错误:

input:1: attempt to call a nil value (global 'loadstring')
点赞
用户234091
用户234091

loadstring在Lua 5.1以后的版本中不可用。您链接的演示正在运行Lua 5.3。您可以通过运行程序print(_VERSION)来证明。

在Lua 5.2及更高版本中,您的代码应该使用load,这里是一个示例程序,您可以运行它从字符串加载一个块:

local f = load("return 2 + 2")
print(f())
2018-10-29 22:52:01
用户11740758
用户11740758

将下面翻译成中文并且保留原本的 markdown 格式

tdump=[[for k,v in pairs(_G) do print(k,v) end]]
load(tdump)()

这是 Lua 5.4 版本,并且有 load 函数。 看一下...

tdump=[[for k,v in pairs(_G.io) do print(k,v) end]]
load(tdump)()

...只有 write() 函数,我认为这是出于安全原因,削减了 Lua 5.4 CGI 的函数。

2020-08-29 15:58:54