我继承了一些用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
如何打印变量值而没有任何错误?
答案 0 :(得分:7)
你根本没有很好地解释自己。但是,从你得到的错误来看,我认为这是一个CGI程序。
CGI程序将其输出发送到STDOUT
,其中Web服务器捕获它并以各种方式处理它。为了使其正常工作,程序打印到STDOUT
的数据需要遵循各种规则。这些规则中最重要的可能是程序的第一个输出必须是CGI标题 - 至少,这些标题应包含Content-type:
标题。
我假设您在程序发送CGI标头之前尝试显示调试输出。那不行。
但是您真的想将调试输出发送到STDOUT
吗?这似乎是一个坏主意。如果您使用warn()
代替print()
,那么您的输出将转到STDERR
- 而在大多数网络服务器中,STDERR
都会连接到网络服务器的错误日志。
要更好地控制warn()
生成的输出,请参阅CGI::Carp模块。