Perl 将一些内容从脚本中输出,另一些内容输出到屏幕上

Perl 将一些内容从脚本中输出,另一些内容输出到屏幕上

如何通过 Perl 脚本将某些输出传送到屏幕以及其他选定的输出?

答案1

通过使用不同的文件句柄。

默认情况下,您将同时拥有STDOUTSTDERR。 Perl 中的函数print实际上是 的简写print STDOUT

在您的终端中STDOUT给出了文件句柄1STDERR给出了文件句柄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 中)将很有用。

相关内容