文件句柄(filehandle)就是程序里代表Perl进程(process)与外界之间的I/O联系的名字.它是"这种联系"的名称,不一定是文件名.文件句柄的命名如图Perl其他的标识符,但是因为没有任何前置字符,所以阅读的时候可能会与现在或将来的保留字相混淆,建议使用全大写字母来命名文件句柄.
有6个特殊文件句柄是Perl保留的,分别是STDIN,STDOUT,STDERR,DATA,ARGV,ARGVOUT.
Perl提供的三种文件句柄STDIN,STDOUT和STDERR都是由产生Perl进程的父进程自动打开的文件或设备.
当需要其他的文件句柄时,使用open操作告诉Perl,要求操作系统为程序和外界架起一道桥梁.
- #!/usr/bin/perl
-
use strict;
-
open CONFIG,"dino";
-
open CONFIG,";
-
open BEDROCK,">fred";
-
open LOG,">>logfile";
第一行会打开名为CONFIG的文件句柄,让它指向文件dino.文件中的任何内容都能从文件句柄CONFIG读到程序中来.这和利用shell的重定向(第二行正好利用这样的技巧,它和第一行所做的事情完全相同,只不过用了小于号来声明"此文件只是用来输入的",而这正是默认的操作.
第三行会打开文件句柄BEDROCK并输出到新文件fred.大于号的用途跟shell的重定向一样,会将输出送到一个名为fred的新文件.如果已经存在一个名为fred的文件,那么就清除原有的内容并以新内容取代之.
第四行为追加打开.
当文件句柄以读取模式打开后,可以轻易地从它读取一行数据,就像从STDIN读取标准输入流一样.
以写入或添加模式打开的文件句柄可以在print或printf函数中使用.使用时,直接将它放在关键字之后,参数列表之前.
- #!/usr/bin/perl
-
use strict;
-
die "Not existed($!)" if ! open CONFIG,"dino";
-
while(<CONFIG>) {
-
chomp;
-
print "$_\n";
-
}
-
open LOG,">>logfile";
-
print LOG "Captain's log,stardate 3.14\n";
阅读(526) | 评论(0) | 转发(0) |