【发布时间】:2017-09-27 12:13:10
【问题描述】:
我知道print、printf、die、warn、say 具有不同的功能,但都打印到控制台。我正在做一个项目,我将日志框架集成到 Perl,所以我需要知道在 Perl 中打印输出到控制台的所有功能,无论它们的功能如何。
【问题讨论】:
标签: perl logging console printf
我知道print、printf、die、warn、say 具有不同的功能,但都打印到控制台。我正在做一个项目,我将日志框架集成到 Perl,所以我需要知道在 Perl 中打印输出到控制台的所有功能,无论它们的功能如何。
【问题讨论】:
标签: perl logging console printf
“控制台”是一个稍微复杂的概念。实际上有两个文件句柄,默认情况下,附加到控制台。 STDOUT 是写入标准输出的地方,STDERR 是写入错误和警告的地方。
当然,这些文件句柄可能根本不会附加到控制台。大多数操作系统都支持 I/O 重定向。 STDOUT 可能附加到一个文件,而 STDERR 可能附加到另一个文件。
其中许多函数允许您更改它们写入的文件句柄。例如print() 接受一个可选的第一个参数,它是一个文件句柄。
然后是select,可用于更改print()等函数使用的默认文件句柄。
在perldoc perlfunc 中,您可以找到“输入和输出函数”列表。遍历该列表以提取产生输出的列表非常简单。
die - 写入 STDERRwarn - 写入 STDERRprint - 写入 STDOUTprintf - 写入 STDOUTsay - 写入 STDOUTsyswrite - 写入指定的文件句柄write - 写入 STDOUT当然,还有许多其他模块可以包含写入各种文件句柄的新函数。例如,Carp 定义函数,carp()、croak()、cluck() 和 confess() - 所有这些都写入 STDERR。
【讨论】: