使用CGI::Carp,我想用它set_die_handler
来优雅地输出错误消息。
网页预计不会遇到错误,但如果确实发生并且在print header
已经被调用之后的某个地方发生,它会将标题输出为文本,并且页面很可能格式不正确。
正如问题所述,我想检查 CGI::header() 是否已被调用。这可以通过使用全局变量并将其设置为我可能调用该函数的每个位置来完成,但我希望这可能已经在内部执行;或者可能有一种方法可以解析已经发送到 STDOUT 的内容。非工作代码示例:
BEGIN {
set_die_handler(
sub {
print header if not CGI::header_called;
# or possibly,something like: if (<STDOUT> !~ /Content\-Type/)
...
});
}
注意:
与 CGI.pm 的年龄相关的评论被接受,但也很快被驳回 :) 意识到 Perl 有 MVC 框架