我正在努力将perl Web应用程序的界面转换为Ext
并打算使用CGI-ExtDirect-2.02
库。
我遇到了一个问题,经过几个小时的挣扎,仍然没有解决。
在最简单的用例中,问题是:当我将以下行添加到action方法时,例如Demo/TestAction/getGrid
时,Router.pm
发生错误。在apache
下执行或使用包含在库p5httpd.pl
服务器中时,都会出现相同的错误。
当我删除while(<FILE>)
循环时,错误消失,其他一切正常。
系统配置为:
SunOS 5.10, apache 2, perl 5.12.1.
我添加的行:
open(FILE, "</tmp/test.txt") or die("Can't open file: $!");
while (<FILE>) {
;
}
close(FILE);
错误:
5571 17:58:08 Server started on port 5000.
5571 17:58:08
5571 17:58:08 Point your browser at http://localhost:5000
5571 17:58:11 <- localhost: GET /direct-grid.html HTTP/1.1
5571 17:58:11 -> 200 OK /direct-grid.html: 803 bytes sent as text/html
5571 17:58:11 <- localhost: GET /example.css HTTP/1.1
5571 17:58:11 -> 200 OK /example.css: 1501 bytes sent as text/css
5571 17:58:11 <- localhost: GET /direct-grid.js HTTP/1.1
5571 17:58:11 -> 200 OK /direct-grid.js: 1599 bytes sent as application/x-javascript
5571 17:58:11 <- localhost: GET /cgi-bin/api.cgi HTTP/1.1
5571 17:58:11 -> exec'ing api.cgi
5571 17:58:13 <- localhost: POST /cgi-bin/router.cgi HTTP/1.1
5571 17:58:13 <- Content-length: 119, type: application/json; charset=UTF-8
5571 17:58:13 -> exec'ing router.cgi
Can't call method "result" on an undefined value at
/usr/perl5/site_perl/5.12.1/RPC/ExtDirect/Router.pm line 136.
5571 17:58:13 -> 500 Internal Server Error Premature end of script headers.
<br> Status: 65280<br>Have a look at server log for stderr output of /cgi-bin/router.cgi
答案 0 :(得分:0)
如果循环与问题无关,那么FILE
超级全局可能存在问题。尝试将其更改为
open my $if, "<", "/tmp/test.txt";
while(<$if>) {
# whatever
}
close $if;