理解 Perl 中的 STDIN、STDOUT 和 STDERR398


Perl 中的 $< 是一个特殊变量,用于引用标准输入句柄。它是三个预定义句柄之一,其他两个是 STDOUT(标准输出句柄)和 STDERR(标准错误句柄)。这些句柄提供了与程序交互的便捷方式,无需指定文件名。

STDIN(标准输入)STDIN 是 Perl 脚本读取来自键盘或其他输入设备(如管道)的输入的默认句柄。它是预打开的,并且可以像访问文件一样进行操作,使用读操作(如 )和写操作(如 print STDIN)。

例如,以下脚本从标准输入读取一行输入并将其打印出来:```perl
#!/usr/bin/perl
use strict;
use warnings;
my $input = ;
print $input;
```

STDOUT(标准输出)STDOUT 是 Perl 脚本写入输出设备的默认句柄,通常是终端或控制台窗口。它也是预打开的,并且可以像访问文件一样进行操作,使用写操作(如 print STDOUT)。

例如,以下脚本打印 "Hello, World!" 到标准输出:```perl
#!/usr/bin/perl
use strict;
use warnings;
print STDOUT "Hello, World!";
```

STDERR(标准错误)STDERR 是 Perl 脚本写入错误消息和警告的默认句柄。它与 STDOUT 类似,但输出与标准输出分开,通常用红色或其他颜色字体打印。

例如,以下脚本打印一条错误消息到标准错误输出:```perl
#!/usr/bin/perl
use strict;
use warnings;
print STDERR "Error: File not found.";
```

重定向句柄标准输入、输出和错误句柄可以重定向到不同的目标,例如文件或管道。可以通过使用文件句柄操作符 (>) 来实现这一点。

例如,以下脚本将标准输出重定向到名为 "" 的文件:```perl
#!/usr/bin/perl
use strict;
use warnings;
open(STDOUT, ">");
print "Hello, World!";
```

句柄模式句柄模式决定了句柄如何处理输入和输出。有三种可能的模式:
* 二进制模式(binmode):操作二进制数据,不转换换行符。
* 文本模式(autoflush):操作文本数据,自动将换行符转换为平台特定的换行符。
* 缓冲模式(unbuffered):不缓冲输入和输出,每次操作都会立即写入输出。
默认情况下,标准句柄使用文本模式。可以通过使用 binmode() 函数将句柄切换到二进制模式。

关闭句柄当不再需要使用句柄时,应将其关闭以释放系统资源。可以通过使用 close() 函数来实现这一点。

例如,以下脚本关闭标准输出句柄:```perl
#!/usr/bin/perl
use strict;
use warnings;
close STDOUT;
```

STDIN、STDOUT 和 STDERR 是 Perl 中用于与程序交互的三个预定义句柄。它们可以用于读取输入、写入输出和打印错误消息。了解这些句柄对于编写与用户交互的 Perl 脚本至关重要。

2025-01-07


上一篇:perl $` $& $‘ 揭秘 perl 中的神秘匹配变量

下一篇:perl ++:提升 Perl 编程体验