perl 文件[二]
发布时间:2020-12-15 23:52:27 所属栏目:大数据 来源:网络整理
导读:错误输出函数与错误变量open() || die "error$!"; 成功时不执行die,失败时执行 (||或操作)die($errstr);向STDERR输出指示错误信息的串,然后退出程序。warn($errstr);向STDERR输出信息,不退出程序$! 最后一次错误的信息。与die,warn 结合使用。die($str)中
错误输出函数与错误变量 open() || die "error$!"; 成功时不执行die,失败时执行 (||或操作) die($errstr);向STDERR输出指示错误信息的串,然后退出程序。 warn($errstr);向STDERR输出信息,不退出程序 $! 最后一次错误的信息。与die,warn 结合使用。 die($str)中$str中最后不是n时,输出自动添加at程序名line行号。 如die("can't open");输出can't open at myprog line 13 加上n如“can't openn"时没有添加的信息。 open (FD,"5.pl") || die ; @line=<FD>; foreach (@line) { print $_; }; print "xxxxxxxx"; die 直接退出 open (FD,"5.pl") || warn($errstr); ; @line=<FD>; foreach (@line) { print $_; }; print "xxxxxxxx"; warn($errstr);向STDERR输出信息,不退出程序 文件缓冲: close(F);最后要关闭文件。隐含关闭文件,重打开已经打开的,先关闭再打开,程序退出自动关闭。真正写文件。 文件缓冲:通常为代缓冲的文件写。写文件时,系统先写到称为文件缓冲区的内存中,缓冲满再真正写入磁盘。一般在关闭时缓冲内容才开始写入磁盘,称为刷新。结果时用tail -f 是看不到不断地输出内容的。 无文件缓冲:每次写都真正写入磁盘中,不经过内存。频繁写入可能影响性能。 设置$|变量决定是否有文件缓冲,$|=1无缓冲。但值对当前输出文件有效。如STDOUT,设置另外的文件要先用select(F). select(F)设置当前文件,返回原文件句柄。设置完再SELECT(OLD)返回原文件。 缓冲 无缓冲 打开: open,sysopen sysopen 关闭 close 读 <>,readline sysread 写 print syswrite 定位 tell,seek sysseek 文件名: Filename:含相对路径或绝对路径的文件名 不含路径的文件名前的空格可以忽略,但有路径的文件名不能。 可以用变量代表文件名 特殊的文件如">file",可能使读变成写。使用变量代表文件名时注意过滤文件名。 赋值文件句柄;open(F,">&STDOUT);写入F文件的内容都变成写入屏幕STDOUUT 使用文件描述符:open(F,">&3);把文件描述符赋值成句柄。或者">&=3" open() 打开成功返回非零,失败返回零 其他文件打开函数: 间接文件变量:用简单变量表示文件变量,代表文件变量名。 $a="F";open($a,"mode","path"); sysopen(H,name,m|o|d|e,priv);文件句柄,文件名,读写模式,权限。 权限类似0755的数字,模式有 O_RDONLY,读文件 $line=<file>读一行到line,指针后移一行。缺省读到$_中 $/='n',行分割符,遇到它则为一行结束,行包含$/. 可用chomp($s)去除标志,行尾不含$/则不去除自负 可设置$/为其他自负窜,遇到$/为行结束,chomp 去除此字符窜 @array = <file>文件内容全部读出,每行为一个元素。含回车。 当从STDIN中读时,可省略为<> .原理见后 read (F,$in,len[,$offset]) getc(F) 读一个字符 用$/ 来表示行分割符 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |