文件句柄(filehandle)是Perl程序I/O链接的名字,是连接的名字,而非文件的名字。
建议文件句柄的所有字母均大写。
Perl自身有六个文件句柄: STDIN, STDOUT, STDERR, DATA, ARGV, ARGVOUT。
文件句柄的打开
open CONFIG, "dino";
open CONFIG, "<dino";
open BEDROCK, ">fred";
open LOG, ">>logfile";
第一例打开了一个名为CONFIC的文件句柄,它指向dino文件。也就是说,文件dino将被打开,其所包含的数据通过CONFIG传给程序。
第二例与第一例类似,它是和第一例是一样的,只是<明确的指明了"使用这个文件惊醒输入操作",虽然默认的情况就是输入。
第三例使用了大于号>来表明是文件的输出。如果存在这样的文件,则清空它,并将新的数据写入。
第四例使用了两个大于号>>,它打开一个文件,数据追加到文件后面。也就是说,如果文件存在,将把新数据天道后面,如果不存在,则和大于号>一样,创建文件并写入数据。
Bad文件句柄
如果从一个bad文件句柄读入(文件句柄没有恰当打开),会立刻到达文件结尾(EOF)。如果写到一个bad文件句柄,数据会被悄悄地丢掉。
可使用-w或use warnings来避免。
关闭文件句柄
close CONFIG;
严重错误和die
当Perl内部发生一个严重错误,程序将停止运行,并告诉你失败的原因。可以用die函数来创建我们自己的严重错误。
die函数将打印出你给它的消息,并确保程序退出时为非零的退出状态。
警告信息和warn
与die类似,但是程序不会退出。
#!/bin/perl
use warnings;
use strict;
if (@ARGV < 1) {
warn "Not enough argument. $!";
}
if (!open FILEHANDLE, "hello.pl") {
die "Open source handle fail. $!";
}
if (!open BACKUP, ">hellobk.pl") {
die "open backup handle fail. $_";
}
while (<FILEHANDLE>) {
chomp;
print "$_/n";
print BACKUP "$_/n";
}
close BACKUP;
close FILEHANDLE;