【问题标题】:Printing variable in the server code服务器代码中的打印变量
【发布时间】:2018-10-04 21:49:10
【问题描述】:

我继承了一些用 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

如何打印变量值而不出现任何错误?

【问题讨论】:

  • 这不是 Perl 问题。 HTTP 响应需要指明内容类型。见Content-Type。出于调试目的,请使用CGI::Carp

标签: apache perl server


【解决方案1】:

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

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

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

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

要对warn() 生成的输出进行更多控制,请参阅CGI::Carp 模块。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-10
    • 2019-11-07
    • 2020-08-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多