五、错误输出函数与错误变量
open()||die “error $!” 成功时不执行die,失败时执行
1.die($errstr):向STDERR输出指示错误信息的串,然后退出程序。
2.warn($errstr):向STDERR输出警告信息,不退出程序。
3.$!最后一次错误的信息,一般与die,warn结合使用。
说明:
die($str)中$str最后不是/n时,输出自动添加at程序名line行号,如die(“can’t open”)
输出can’t open at myprog line 13,加上/n如”can’t open”时没有添加信息。
六、文件缓冲
close(F):最后要关闭文件,隐含关闭文件,重打开已经打开的,先关闭再打开,程序退出自动关闭,这时才真正写文件。
1.文件缓冲:通常为带缓冲的文件写,写文件时,系统先写到称为文件缓冲区的内存中,缓冲满再真正写入磁盘.一般在关闭时缓冲内容才开始写入磁盘,称为刷新,结果是用 tail -f 是看不到不断地输出内容的。
2.无文件缓冲:每次写都真正写入磁盘中,不经过内存,频繁写入可能影响性能。
3.设置$|变量决定是否有文件缓冲,$|=1无缓冲,但只对当前输出文件有效,如STDOUT,设置另外的文件要先用select(F)。
4.select(F)设置当前文件,返回原文件句柄,设置完再select(OLD)返回原文件。
缓冲 | 无缓冲 | |
打开 | open,sysopen | sysopen |
关闭 | close | |
读 | <>,readline | sysread |
写 | syswrite | |
定位 | tell,seek | sysseek |
其它文件打开函数
间接文件变量:用简单变量来表示文件变量,代表文件变量名
$a=”F”;open($a,”mode”,”path”);
七、读文件
1.常见方式:$line=<file> 读一行到line,指针后移一行,缺省读到$_中
$/=’/n’ 为行分隔符,遇到它则为一行结束,行包含$/
2.用chomp($s)去除此标志,行尾不含$/则不去除字符。
3.可设置$/为其它字符串,遇到$/为行结束,chomp去除此字符串。
@array=<file> 文件内容全部读出,每行为一个元素,含回车,当从STDIN中读时,可省略为<>。
read(F,$in,len[,$offset] 读入$in
sysread(F,$in,len[,$offset])
getc(F)读一个字符