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

标签 perl logging console printf

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

最佳答案

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

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

其中许多函数允许您更改它们写入的文件句柄。例如,print() 采用可选的第一个参数,即文件句柄。

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

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

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

当然,还有任意数量的其他模块可以包含写入各种文件句柄的新函数。例如,Carp定义函数 carp()croak()cluck()confess() - 所有写入 STDERR。

关于perl - 在 Perl 中将输出写入控制台有哪些不同的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46447595/

相关文章:

c - 从终端读取 input.txt 文件和 output.bmp 文件(C 编程)

重载 I/O 运算符时的 C++ unicode 框字符绘制

windows - 如何使用 Perl 在 Windows 中创建 unicode 文件名

c# - 登录C#网站时出错

linux - 如何在 crontab 中正确设置 perl 脚本的环境变量?脚本正在使用解决方法执行

python - 日志配置字典中的空括号 "()"是什么意思?

java - 当依赖项使用不同的日志记录时会发生什么?

c# - 如何在C#中以编程方式控制VLC?

perl - 如何调试 DBIx::Class?

perl - 什么时候应该使用 XS?