一、文件描述符:
访问文件时用来代表文件的数字。
它是系统资源,系统限制打开的文件描述符数量。
Perl中只在某些系统调用时才使用它
文件句柄:
功能同文件描述符,但是与文件描述符不是一个东西。
Perl使用文件句柄代表文件。
文件描述符与文件句柄互相转化:
文件句柄=>文件描述符:fileno(F);返回文件描述符
文件描述符=>文件句柄:open(F,”>&n”);
二、文件变量
文件:存放在磁盘上,永久存储数据,用于读写访问。访问前要先打开文件,结束后关闭文件。
open(HANDLE,”>filename”)||die $!; 成功返回非零,失败返回零。
HANDLE:文件句柄,文件变量.用来代表操作的文件,以字母开头,字母,数字,下划线组成,不以$,@,%类的符号开头,可能与关键字if等重名,故一般用大写字母.
缺省打开的句柄STDIN,STDOUT,STDERR,文件描述符为0,1,2。不用调用open就可以直接访问
STDIN:键盘输入,控制台
STDOUT:屏幕,显示屏
STDERR:错误输出,显示屏。
三、访问模式
文件用于读还是写,在第二个参数前的>位置。
(1) 只读:<或省略,若文件不存在则打开失败,如open(F,”file”),open(F,”<file”)
(2) 只写:>,为写打开文件,若文件不存在则创建,文件存在则清除内容再写.
(3) 追加:>>,为写打开文件,若文件不存在则创建,文件存在则不清除内容,在原内容后追加。
(4) 读写:+<,可读可写,若文件不存在则打开失败,不清除内容,不追加,直接复盖原文件.
(5) 读写+>,可读可写,若文件不存在则创建,文件存在则清除内容再写.
(6) 读写+>》,可读可写,若文件不存在则创建,文件存在则追加.
(7) 管道: |
open(F,”| cat >hello”),把文件F的输出(print F $a)作为|后的输入. open(F,”comm|”),把comm的输出作为F的输入。
四、文件名
Filename:可以是相对路径或绝对路径的文件名.
说明:
1.不含路径的文件名前的空格可以忽略,但有路径的文件名不能。
2.可以用变量来代表文件名.
3.特殊的文件名如”>file”,可能使读变成写,使用变量代表文件名时注意过滤文件名.
4.复制文件句柄:open(F,”>&STDOUT”),写入F文件的内容都变成写入屏幕STDOUT
5.使用文件描述符:open(F,”>&3″),把文件描述符复制成句柄,或者”>&=3″
6.open() 打开成功返回非零,失败返回零.
open()||die “error $!” 成功时不执行die,失败时执行.