小编mig*_*g81的帖子

我需要用 Defined(@array) 和 Defined(%hash) 重构一段古老的 Perl 代码

我正在运行一个古老版本的 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而且我不太确定如何做到这一点。

perl cgi movabletype

1
推荐指数
1
解决办法
348
查看次数

标签 统计

cgi ×1

movabletype ×1

perl ×1