Perl はスクリプトの内容やその他の内容を画面に出力します。

Perl はスクリプトの内容やその他の内容を画面に出力します。

Perlスクリプトを使用して特定の出力を画面や他の選択した出力にパイプするにはどうすればよいですか?

答え1

別のファイルハンドルを使用してください。

STDOUTデフォルトでは、とがありますSTDERR。 Perlの関数はprint実際にprint STDOUT

端末にはSTDOUTファイルハンドルが提供され、1ファイルSTDERRハンドルが提供されます2

以下は、各ファイルハンドルに印刷し、各ファイルハンドルを/ dev / nullにリダイレクトする例です。

$ perl -e 'print STDOUT "foo\n"; print STDERR "bar\n";'
foo
bar
$ perl -e 'print STDOUT "foo\n"; print STDERR "bar\n";' 1> /dev/null
bar
% perl -e 'print STDOUT "foo\n"; print STDERR "bar\n";' 2> /dev/null
foo
  • 最初のコマンドは両方とも印刷します。
  • 2番目のコマンドは削除しSTDOUTて印刷するだけです。STDERR
  • 3番目のコマンドは削除しSTDERRて印刷するだけです。STDOUT

独自のファイルハンドル(ログファイルなど)を宣言し、そのファイルハンドルとして印刷することもできます。望むよりperldoc -f open

答え2

Perlipcのドキュメント、特に名前付きパイプのセクションを読むことをお勧めします。

http://perldoc.perl.org/perlipc.html#Named-Pipes

perlipc - Perlプロセス間通信(信号、fifo、パイプ、安全なサブプロセス、ソケット、セマフォ)

外部プログラムとの双方向(読み取りおよび書き込み)通信が必要な場合は、IPC :: Open2またはIPC :: Open3モジュール(標準のPerlライブラリ、上記のURLにも説明されています)が便利です。

関連情報