6

所以我写了一个简单的html 1.0服务器,我在服务器上有一些perl脚本。特别是,我有这个称为直方图的脚本,这是一个 html 表单,其表单操作等于另一个 cgi 文件。这是代码:

print "<form action=\"tallyandprint.cgi\" method=\"GET\">";

现在,当我调用tallyandprint.cgi 时,它会用gnuplot 绘制一个图形并将其发送到用户的浏览器(STDOUT 在html 服务器代码中被重定向,所以perl 继承了它)。现在,我还希望能够从 bash 运行 tallyandprint.cgi,但采用不同风格的参数。现在,我使用 perl 解析通过解析 url 来获取模式,并将 + 符号之间的内容分开(例如:?pattern=1+2+3+4 是 url 的含义)。

这很好,很花哨,但我不希望我的论点用 bash 写成 1+2+3+4,而是以不同的方式分隔。我尝试使用 perl 的 isatty() 版本,但由于输入始终来自终端(因为服务器执行它),我无法区分输入是来自 bash 还是来自 Web 浏览器。

我的下一个想法是找出 STDOUT 是否被重定向。因为如果网络服务器运行 cgi,STDOUT 将被重定向到用户连接的套接字。如果在 bash 中运行,STDOUT 应该是正常的 tty。我如何在 perl 中检查这个?

4

1 回答 1

10
if (-t STDOUT) {
    say "STDOUT is probably not redirected";
}
else {
    say "STDOUT is probably redirected";
}
于 2012-05-06T20:55:46.483 回答