6

そこで、単純なhtml 1.0サーバーを作成し、サーバー上にいくつかのperlスクリプトがあります。特に、ヒストグラムと呼ばれるこのスクリプトがあります。これは、別のcgiファイルと同等のフォームアクションを持つhtmlフォームです。コードは次のとおりです。

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

これで、tallyandprint.cgiを呼び出すと、gnuplotを使用してグラフがプロットされ、ユーザーのブラウザーに送信されます(STDOUTはhtmlサーバーコードでリダイレクトされるため、perlが継承します)。ここで、bashからtallyandprint.cgiを実行できるようにしたいのですが、別のスタイルの引数を取ります。現在、私はperl解析を使用して、URLを解析し、内容を+記号で区切ってパターンを取得しています(例:?pattern = 1 + 2 + 3 + 4はURLです)。

それは問題なくダンディですが、私の引数を1 + 2 + 3 + 4としてbashで記述したくはなく、別の方法で分離したいと思います。perlのバージョンのisatty()を使用しようとしましたが、入力は常にターミナルからのものであるため(サーバーが実行するため)、この方法で入力がbashからのものかWebブラウザーからのものかを区別できません。

私の次は、STDOUTがリダイレクトされているかどうかを確認することでした。Webサーバーが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 に答える