我继承了一些在 Linux 服务器上运行良好的 Perl 代码。我正在让它在 Windows XP、ActiveState Perl 5.16.2 和 BitNami WAMP 堆栈上运行。(注意:这个设置已经在运行我的 Perl .cgi 程序,所以这是一个工作设置。)
无论如何,“main” Perl 程序——我们称之为 main.cgi——有这样的声明:
require("extra/stuff_1.cgi");
main.cgi 运行时出现错误:
C:/BitNami/apache2/cgi-bin/extra/stuff_1.cgi did not return a true value at C:/BitNami/apache2/cgi-bin/main.cgi line XX.
现在奇怪的是: stuff_1.cgi 以 1 结尾;(即,它是文件中的最后一行)!
我什至注释掉了 stuff_1.cgi 中函数中的代码——这些函数主要是 Here Documents 的函数,例如
sub func {
return <<EOF;
...
EOF
}
让它只包含
sub func {
#
#return <<EOF;
#...
#EOF
}
等等
然而“没有返回真实值”仍然发生!
但是,如果我删除所有代码,那么 stuff_1.cgi 包含
1;
错误消失了(应该如此)。
stuff_1.cgi 通过perl -c
,即使使用use strict
anduse warnings
ETA:如果我复制 stuff_1.cgi 的内容并将其粘贴到 main.cgi 中(替换require
语句),代码就可以正常工作。
我以前从未见过这样的事情;可能是什么原因?