Perl 对文件的读写是通过文件句柄来实现的,标准输入输出的文件句柄分别为STDIN和STDOUT, 重定向输入输出只需要修改标准输入与标准输出的文件句柄指向即可.
1.输出重定向
perl 默认输出为终端显示器, 文件句柄为STDOUT, 因此只需要修改STDOUT 指向的文件即可重定向输出
1.1 定向输出到具体文件
open STDOUT
, ">>", "hello.txt" or die "cannot opern hello.txt";
print "hello,world\n";
1.2 重定向输出为空
open STDOUT
, ">>", "/dev/null" or die "cannot redirect standard output";
print "hello,world\n";
1.3 测试输出
$
./io
.pl
open STDIN
, "<", "io.pl" or die "can not open file: io.pl\n";
$line = <STDIN>;
printf
"- %s", 1, $line;
$line = <STDIN>;
printf
"- %s", 2, $line;
$line = <STDIN>;
printf
"- %s", 3, $line;
@lines = <STDIN>;
for (0..$#lines){
printf
"- %s", $_+3, $lines[$_];
}
2. 输入重定向
perl 标准输入为从键盘中读入, 文件句柄为STDIN, 因此只需要修改STDIN句柄指向的文件即可这样使用STDIN时, 就不会再等待用户输入了, 而是直接从文件中读取一行输入重定向一般都不常用
#!/usr/bin/perl
#重定向标准输入
open STDIN, "<", "io.pl" or die "can not open file: io.pl\n";
#重文件中读取一行
$line = <STDIN>;
printf "- %s", 1, $line;
#读取文件第二行
$line = <STDIN>;
printf "- %s", 2, $line;
#读取文件第三行
$line = <STDIN>;
printf "- %s", 3, $line;
@lines = <STDIN>;
for (0..$#lines){
printf "- %s", $_+3, $lines[$_];
}