
如何透過 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
- 第一個命令列印兩者。
- 第二個指令丟棄
STDOUT
並僅列印STDERR
- 第三個命令丟棄
STDERR
並僅列印STDOUT
您也可以聲明自己的檔案句柄(例如日誌檔案)並列印到該檔案句柄。看perldoc -f open
。
答案2
您可能想閱讀 perlipc 文檔,特別是有關命名管道的部分。
http://perldoc.perl.org/perlipc.html#Named-Pipes
perlipc - Perl 進程間通訊(訊號、fifo、管道、安全子進程、套接字和信號量)
如果您需要與外部程式進行雙向(讀取和寫入)通信,那麼 IPC::Open2 或 IPC::Open3 模組(標準 perl 庫,也記錄在上面的 URL 中)將很有用。