在Perl中将输出写入控制台的不同方式是什么?

Din*_*wda 2 console perl logging printf

我知道printprintfdiewarnsay有不同的功能,但所有打印到控制台。我正在一个项目中,我正在将日志记录框架集成到Perl中,因此我需要知道所有在Perl中将输出打印到控制台的功能,无论其功能如何。

Dav*_*oss 5

“控制台”是一个稍微复杂的概念。默认情况下,实际上有两个文件句柄附加在控制台上。STDOUT是写标准输出的位置,而STDERR是写错误和警告的位置。

然后,当然,这些文件句柄可能根本不会附加到控制台。大多数操作系统都支持I / O重定向。STDOUT可能附加到一个文件,而STDERR附加到另一个文件。

许多这些功能允许您更改它们写入的文件句柄。例如,print()采用一个可选的第一个参数,它是一个文件句柄。

然后是select可以用来更改默认文件句柄的功能,例如print()

perldoc perlfunc中,您可以找到“输入和输出函数”的列表。遍历该列表以提取产生输出的内容非常简单。

  • die -写入STDERR
  • warn -写入STDERR
  • print -写入STDOUT
  • printf -写入STDOUT
  • say -写入STDOUT
  • syswrite -写入指定的文件句柄
  • write -写入STDOUT

当然,还有许多其他模块可以包含写入各种文件句柄的新功能。例如,鲤鱼限定,则各功能carp()croak()cluck()confess()-所有这些都写入到stderr。