一、打开文件:
$OpenFileFlag = open(FILEHANDLE,"模式标识符 FileName");
如果打开成功,则返回真值(非空值);如果打开失败,则返回假值(空值);文件的默认访问模式是只读;
$OpenFlag = open(HFCAT,"cat file* |");
则open函数先把cat命令的输出构造成一个文件,然后与文件句柄变量HFCAT关联起来;
$OpenFlag1 = open(FH1,"> FileName");
$OpenFlag2 = open(FH2,">& FH1");
这两行语句的功能是把文件句柄FH1和HF2都关联到文件FileName上,两个文件句柄都向同一个文件中写入数据;
其中第二条语句中的参数">& FH1"告诉Perl解释器使用已经打开的并与文件句柄FH1关联的文件,即:文件句柄FH1和FH2都指向与FH1相关联的文件;
关闭文件使用函数close();如果关闭的文件是管道文件,即重定向的命令时,程序会等待重定向命令执行结束;
close(FILEHANDLE);
三、print、printf和write函数:
1、print ("Hello,Perl World/n");
输出到当前默认的文件中(由select()函数选择),没有调用select()时,默认的输出文件是标准输出STDOUT;
2、print OUTFILE ("Hello,Perl World/n") ;
3、printf ($FORMATSTRING,arg1,arg2,...,argN);
先格式化数据,然后把格式化后的数据写到默认文件中(由select()函数选择),没有调用select()时,默认的输出
4、printf OUTFILE ($FORMATSTRING,arg1,arg2,...,argN);
先格式化数据,然后把数据输出到指定文件句柄OUTFILE所指向的文件中;
5、write ($FORMATSTRING,arg1,arg2,...,argN);
6、write OUTFILE ($FORMATSTRING,arg1,arg2,...,argN);
7、select()函数:
select(FILEHANDLE);
这个函数把参数FILEHANDLE所指定的文件句柄设置为当前新的默认文件;当对print、printf和write函数的调用
未指定文件时,默认就写入到文件句柄FILEHANDLE所指向的文件中;
8、eof()函数:
eof函数判断最后一次读文件操作是否是文件的最后一个记录(检查文件读写位置指针是否已经到达文件尾部),
如果是,则返回非零值(真),如果不是,否则返回零值(假);也就是说,最后一次读取文件时,如果文件读写位
置指针已经到达文件尾部,则eof函数返回非零值(真),如果没有到达文件尾部,则返回零值(假);
一般情况下,带圆括号的eof()函数调用与不带圆括号的eof函数调用的效果是一样的;但是如果与文件输入运算
符<>一起使用的话,效果就不一样了;当在命令行输入多个文件的时候,不带圆括号的eof函数调用在读完每一
个文件的时候,都会认为读到这个文件尾部了,此时返回非零值(真),否则返回零值(假);而带圆括号的eof()函
数调用则会认为只有当所有的文件都读取完了,才会认为是读取文件结束,也就是说只有当文件读写位置指针
到达最后一个文件的尾部时,才会认为读取文件结束,此时eof()函数返回非零值(真),否则返回零值(假);只有
所有文件都读过了,eof()函数才会返回真值,如果只是多个文件中的前面几个文件的结尾,则eof()函数仍然返
回假值,因为还有需要读取的输入;
四、系统读写函数:
1、read()函数:
Perl把该函数设计得与UNUX系统中的fread()函数等效,用于从指定文件中读取任意长度的字符(字节)数,并把读
$BytesToRead = read(FileVariable,Buffer,Length,BytesTpSkip);
FileVariable:用于存储文件句柄的简单变量;
Buffer:用于存储read读到的数据的简单变量(或数组元素);
Length:最多需要读取的字节数;
BytesToSkip:可选项,用于指定读取文件之前需要跳过的字节数;
返回值:返回值为实际读取到的字节数;如果文件读写位置指针已经到达文件的尾部,则read()返回零;如果出
错,则read()返回空值;
2、sysread()函数:
该函数用于更快地读取数据,其实现与UNIX系统中的read()函数等效,与Perl中的read()函数相同;调用语法:
$BytesToRead = sysread(FileVariable,Buffer,Length,BytesToSkip);
Buffer:用于存储读取到的数据的简单变量(或数组元素);
BytesToSkip:可选项,用于指定在读取文件之前需要跳过的字节数;
返回值:返回值为实际读取到的字节数;如果文件读写位置指针已经到达文件尾部,则sysread()返回零;如果
出错,则sysread()返回空值;
3、syswrite()函数:
该函数用于更快地写入数据,其实现与UNIX中的write()函数等效;有4个参数:
$BytesToWrite = syswrite(FileVariable,DataBuffer,Length,BytesToSkip);
FileVariable:用于存储文件句柄的简单变量;
DataBuffer:用于存放将要写入的数据的缓冲区;
Length:需要写入的字节数;
BytesToSkip:在写文件之前需要跳过的字节数;
返回值:返回实际写入的字节数;如果出错,则syswrite()返回空值;
4、getc()函数:
该函数用于从指定文件中读取一个字符(字节);其实现与UNIX C语言中的getc()函数等效;调用语法:
$Char = getc(FileVariable);
FileVariable:用于存放文件句柄的简单变量;
返回值:返回读取到的字符;
5、binmode()函数:
该函数用于读取二进制文件;当所在的系统对文本文件和二进制文件有所区别时使用;必须在打开文件之后、
binmode(FileVariable) ;
FileVariable:用于存放文件句柄的简单变量;