bur*_*rsk 11 apache perl cgi fastcgi
Perl在FCGI模式下的函数我有一个奇怪的行为.新线不会被追加.为什么会这样?
示例代码:
#!/usr/bin/perl -wT
use strict;
use warnings;
use utf8;
use feature qw( say );
use FCGI ();
use CGI qw( header );
my $cnt = 0;
my $req = FCGI::Request();
while ( $req->Accept() >= 0 ) {
$cnt++;
print header( -type => 'text/plain', -charset => 'utf-8' );
say "Hello, world #$cnt";
print "\n";
print "$$\n"
print 'Test 1234';
}
Run Code Online (Sandbox Code Playgroud)
预期结果(以及通过控制台的实际结果):
Content-Type: text/plain; charset=utf-8
Hello, world. #1
6712
Test 1234
Run Code Online (Sandbox Code Playgroud)
通过Apache/FCGI的实际结果:
Content-Type: text/plain; charset=utf-8
Hello, world. #3
6709
Test 1234
Run Code Online (Sandbox Code Playgroud)
一些软件信息......
Debian Wheezy x86_64 Apache/2.2.22-11 mod_fcgid/1:2.3.6-1.1 Perl/5.14.2-12 FCGI.pm/0.75-1+b1
pma*_*olm 12
不幸的是,say()函数的实现需要filehandle来支持$\variable.基本上说是等同于写作:
{ local $\ = "\n"; print LIST }
Run Code Online (Sandbox Code Playgroud)
使用FCGI,您的STDOUT将被绑定的文件句柄取代,该文件句柄不支持$ \.这意味着say()不能按预期工作.无论这是FCGI中的错误还是说()中的错误似乎都值得商榷.
| 归档时间: |
|
| 查看次数: |
283 次 |
| 最近记录: |