我知道print
,printf
,die
,warn
,say
具有不同的功能,但都打印到控制台。我正在开发一个项目,我将日志框架集成到Perl,所以我需要知道在Perl中打印输出到控制台的所有函数,无论它们的功能如何。
答案 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定义了函数write
,carp()
,croak()
和cluck()
- 所有函数都写入STDERR。