wanzi 2010-11-05
本文和大家重点讨论一下Perl的经典用法:用Open()函数打开Perl文件,open()函数通常带有两个参数,第一个为Perl文件句柄,用于指向打开的Perl文件,第二个参数是Perl文件名及模式(Perl文件的打开模式)的混杂体。
打开Perl文件的常用法子是:open(FH,"<$filename")ordie"Couldn'topen$filenameforreading:$!";
◆open()函数通常带有两个参数,第一个为Perl文件句柄,用于指向打开的Perl文件,第二个参数是Perl文件名及模式(Perl文件的打开模式)的混杂体,如果Perl文件被成功打开,open()函数返回true,否则为false。我们用“or”来该条件。
上述代码中的模式由小于字符(<)来表现。如果Perl文件不存在,open()将返回false。此时,你可以读Perl文件句柄,但不可以写。
大于字符表现写。如果Perl文件不存在,就会被创立。如果Perl文件存在,Perl文件被消除,以前的数据将会丧失。你可以写入Perl文件句柄,但不可以读入。
如果Perl文件不存在,就创立它
open(FH,">$filename")ordie"Couldn'topen$filenameforwriting:$!";
如果Perl文件不存在,添加模式(用两个大于符号表现)可以用来创立新Perl文件,如果Perl文件存在,该模式并不会消除原本的数据。
同“<”或“读”模式一样,你只能对Perl文件句柄进行写操作。(所以的写入内容都添加到Perl文件尾)。打算进行读操作,会产生运行差错。
open(FH,">>$filename")ordie"Couldn'topen$filenameforappending:$!";
◆通过“+<”模式,你可以既可以读Perl文件,又可以写Perl文件。你可以通过tell()函数在Perl文件内部移动,通过seek()函数进行定位。如果Perl文件不存在,就会被创立。如果Perl文件已经存在,原本的数据不会被消除。
如果你筹划消除原本的Perl文件内容,或者自己调用truncate()函数,或者使用“+>”模式。
open()函数通常带有两个参数,第一个为Perl文件句柄,用于指向打开的Perl文件,第二个参数是Perl文件名及模式(Perl文件的打开模式)的混杂体,注意“+<”和“+>”的差别,两者都可以可读可写。前者为非毁坏性写,后者为毁坏性写。
差错
差错是如何出现的?很多处所都会出现差错:如目录不存在,Perl文件不可写入,你的程序丧失了Perl文件句柄等等。
你该当反省系统调用的效果(如open()和sysopen()),看看是否调用成功。
为了赞助用户查错,通常应用“ordie()”,你应记住这些用法。首先,应写出系统调用失败(“open”)的信息。其次,应写出Perl文件名的信息,以便修正错误时更容易地定位。第三,要写出打开Perl文件的法子,(“forwriting,”“forappending”)。第四,输出操作系统的出错信息(包孕在$!中)。这样,一旦出现Perl文件不能打开的问题,应用你的程序的用户会大体上知道为什么不能打开。有时,我们把第一个和第三个合并在一起:
ordie"unabletoappendto$filename:$!";
如果在open()和出错信息中都写了Perl文件的全名,你会冒转变了open()的风险,使得出错信息不合时宜或不正确。
◆下面会出现虚伪的出错信息
open(FH,"ordie"Can'topen/var/log/file.podforwriting:$!";