我正在运行一个古老版本的 Movable Type,它对我来说效果很好。但是,我开始收到以下服务器错误:
defined(@array) is deprecated at /home/public_html/cgi-bin/mt/extlib/Locale/Maketext.pm line 623.
defined(%hash) is deprecated at /home/public_html/cgi-bin/mt/extlib/Locale/Maketext.pm line 623.
Run Code Online (Sandbox Code Playgroud)
我找到了有问题的行:
if defined(%{$module . "::Lexicon"}) or defined(@{$module . "::ISA"});
Run Code Online (Sandbox Code Playgroud)
以下是重构这一行的正确方法吗?
if %{$module . "::Lexicon"} or @{$module . "::ISA"};
Run Code Online (Sandbox Code Playgroud)
如果是这样,为什么?如果没有,为什么不呢?我想更好地了解defined(@array)和发生了什么defined(%hash)。
更新:我还在第 367 行发现了类似的问题CGI.pm:
if (defined(@QUERY_PARAM) && !defined($initializer)) {
Run Code Online (Sandbox Code Playgroud)
我重写了如下,但我仍然不确定它是否正确:
if (@QUERY_PARAM && $initializer) {
Run Code Online (Sandbox Code Playgroud)
我可以看到如何@QUERY_PARAM确认它存在,但我可能没有设置第二个不存在的条件$initializer,而且我不太确定如何做到这一点。