在服务器代码中打印变量

时间:2018-04-24 15:03:12

标签: apache perl server

我继承了一些用Perl编写的代码,并在服务器和客户端之间发出HTTP请求。我想打印服务器代码中的一些变量,但是当我使用print语句时会引发错误。变量是标量,数组或散列。我想将输出打印到终端,仅用于调试目的。我得到的错误很少 -

malformed header from script 'get_config': Bad header: self=$VAR1 = bless( {

Response header name 'self=Bio' contains invalid characters, aborting request

简单的print 'test'会引发错误,例如

malformed header from script 'get_config': Bad header: test

如何打印变量值而没有任何错误?

1 个答案:

答案 0 :(得分:7)

你根本没有很好地解释自己。但是,从你得到的错误来看,我认为这是一个CGI程序。

CGI程序将其输出发送到STDOUT,其中Web服务器捕获它并以各种方式处理它。为了使其正常工作,程序打印到STDOUT的数据需要遵循各种规则。这些规则中最重要的可能是程序的第一个输出必须是CGI标题 - 至少,这些标题应包含Content-type:标题。

我假设您在程序发送CGI标头之前尝试显示调试输出。那不行。

但是您真的想将调试输出发送到STDOUT吗?这似乎是一个坏主意。如果您使用warn()代替print(),那么您的输出将转到STDERR - 而在大多数网络服务器中,STDERR都会连接到网络服务器的错误日志。

要更好地控制warn()生成的输出,请参阅CGI::Carp模块。