【问题标题】:CGI Printing issueCGI 打印问题
【发布时间】:2016-02-18 14:57:11
【问题描述】:
#!/usr/bin/perl -w
use CGI qw(:all);
use CGI::Carp qw(fatalsToBrowser);
use strict; 
print "Content-type: text/plain\n";
print "\n";

my $date = system('date');

print "Date :: $date";

上面的代码不断产生Date :: 0的输出而不是当前日期。
我找不到这个问题的任何解决方案。请帮忙。

【问题讨论】:

  • system 返回执行命令的状态码,而不是输出。您可以改用反引号。
  • 或者更好的是你应该使用 perl 函数来获取日期
  • 而且标题具有误导性。这不是 CGI 的问题,而是捕获外部命令输出的问题。
  • 请教我如何使用反引号。 @dgw
  • 在 SO 中搜索应该会给你足够的输入......例如here

标签: perl cgi


【解决方案1】:

不要使用system 命令,而是使用backticksystem 命令不会在变量中返回值。更改此行:

my $date = system('date');

my $date = `date`;

有关systembacktick 的更多信息,请参阅此内容: https://stackoverflow.com/a/800105/4248931

【讨论】:

    【解决方案2】:

    system command的返回值就是调用的返回值。对于成功的调用,这将为 0。如果要捕获命令的输出,请使用反引号或 IPC。看看这个答案:Capture the output of Perl system()

    my $date = `date`;
    
    print "Date :: $date";
    

    但最好使用DateTime

    【讨论】:

    • DateTime 不在 Perl 核心中。要获得日期的文本表示,只需调用localtime即可。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-12-30
    • 1970-01-01
    • 1970-01-01
    • 2011-03-11
    • 1970-01-01
    • 1970-01-01
    • 2011-07-05
    相关资源
    最近更新 更多