Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Perl 为什么不是';是否不需要(“文件名”)工作?_Perl_Require - Fatal编程技术网

Perl 为什么不是';是否不需要(“文件名”)工作?

Perl 为什么不是';是否不需要(“文件名”)工作?,perl,require,Perl,Require,我继承了一些在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/stuf

我继承了一些在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文档的函数,例如

sub func {

return <<EOF;
...
EOF
}
错误消失了(正如它应该消失的那样)

stuff_1.cgi通过
perl-c
,即使是
使用严格的
使用警告

ETA:如果我复制stuff_1.cgi的内容并将其粘贴到main.cgi中(替换
require
语句),代码工作正常

我以前从未见过这样的事情;原因可能是什么?

为什么调试器不工作(Windows下的ActiveState或草莓Perl)?

不幸的是,PathTools的最新版本(Perl发行版的一部分,文件Cwd.pm)包含一个破坏EPIC调试器前端的bug。具体症状是错误消息“perl5db.pl未返回真值。”-要查看此消息,应在EPIC首选项中启用“调试器控制台”。此外,如果您有这个问题,调试根本不起作用。要修复它,必须编辑Perl发行版的Cwd.pm,并从一行中删除有问题的“eval”关键字,如本错误报告中所述。不要试图通过将Perl的“lib”目录添加到项目的include路径来修复它,因为这将导致忽略所有断点


也许我遇到的是ActiveState版本的Perl中的一个缺陷

不管怎么说,在花了太多时间之后,我唯一能让它工作的方法就是更换它

require 'extra\stuff_1.cgi';


我不喜欢这样做,但该是继续前进的时候了

有趣。但是,我的Cwd.pm没有此问题。此问题似乎是由BitNami WAMP堆栈引起的。有时有效,有时无效。
1; 
require 'extra\stuff_1.cgi';
eval { require 'extra\stuff_1.cgi' };