在Perl中将输出写入控制台的不同方法有哪些?

时间:2017-09-27 12:13:10

标签: perl logging console printf

我知道printprintfdiewarnsay具有不同的功能,但都打印到控制台。我正在开发一个项目,我将日志框架集成到Perl,所以我需要知道在Perl中打印输出到控制台的所有函数,无论它们的功能如何。

1 个答案:

答案 0 :(得分:4)

“控制台”是一个稍微复杂的概念。实际上,有两个文件句柄默认连接到控制台。 STDOUT是写入标准输出的地方,STDERR是写入错误和警告的地方。

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

其中许多功能允许您更改他们写入的文件句柄。例如,context.pipesNgModulePath = path_1.resolve(getConfigValue(context, '--pipesNgModulePath', null, Constants.ENV_PIPES_NG_MODULE_PATH, Constants.ENV_PIPES_NG_MODULE_PATH.toLowerCase(), path_1.join(context.srcDir, 'PIPES', 'pipes.module.ts'))); 采用可选的第一个参数,即文件句柄。

然后有print()可用于更改select等函数使用的默认文件句柄。

perldoc perlfunc中,您可以找到“输入和输出功能”列表。通过该列表提取产生输出的列表非常简单。

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

当然,还有许多其他模块可以包含写入各种文件句柄的新功能。例如,Carp定义了函数writecarp()croak()cluck() - 所有函数都写入STDERR。