Perl学习笔记(七)--文件(二)

五、错误输出函数与错误变量  

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
 print 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)读一个字符

原文地址:https://www.cnblogs.com/Hebe/p/4442246.html