perl读文件
来源:互联网 发布:图片压缩大小软件 编辑:程序博客网 时间:2024/06/05 02:32
文件描述符,文件句柄 一、文件描述符 文件句柄: 二、文件变量 HANDLE:文件句柄,文件变量.用来代表操作的文件,以字母开头,字母,数字,下划线组成. 缺省打开的句柄STDIN,STDOUT,STDERR,文件描述符为0,1,2。不用调用open就可以直接访问. 三、访问模式 四、文件名 Filename:open的最后一个参数,可以是相对路径或绝对路径的文件名. 五、错误输出函数与错误变量. 1.die($errstr):向STDERR输出指示错误信息的串,然后退出程序。 六、文件缓冲 1.文件缓冲:通常为带缓冲的文件写,写文件时,系统先写到称为文件缓冲区的内存中,缓冲 其它文件打开函数 七、读文件 @array=<file> 文件内容全部读出,每行为一个元素,含回车,当从STDIN中读时,可省略为<>. 八、命令行参数 @ARGV:全局,$ARGV[0] 是第一个参数,不是程序名,<>是对$ARGV的引用.@ARGV一旦赋值,原值丢失. 九、写文件 F文件句柄,后面为空格,省略F为STDOUT printf(“format str”,$a,$b….),格化化串包含%m.nf的格式指示,后面依次是相应的值列表。 十、文件权限和随机访问 chmod(mode,filelist) 文件指针: 十一、文件测试 -op expr if(-e “filea”){print STDERR(“file1/n”):} 文件是否存在. -b是否为块设备 -c是否为字符设备 十二、文件状态 stat(file):参数可为文件名,也可为文件句柄,返回文件状态的列表。 编号 名字 unix windows utime(acctime,modtime,filelist):修改时间戳,修改访问时间,返回成功修改的文件数. 十三、文件操作 Glob: truncate(file,lenght):将文件的长度减少到length字节,如果文件长度已经小于length, rename(old,new)成功=1 可以从一个目录移动到另一个目录,不检查new是否存在,可能破坏文件. 十四、文件链接 link(文件名,链接名) synlink符号链接(文件名,链接名)创建现有文件的符号链接,即指向文件名,而不是指向 unlink(filelist)=成功删除的文件数,删除文件或$_中的文件,参数为文件名列表,返回值为 十五、目录操作 opendir(dirvar,dirname) 打开目录,查看某目录中文件列表时也要先打开,再操作,再关闭, 十六、小结 1.概念:描述符,句柄,缓冲,访问模式,权限,文件状态.
文件变量
访问模式
文件名
出错函数与变量$!
文件缓冲
其它文件打开函数
读文件
命令行参数
写文件
文件权限
随机访问
文件测试
文件状态
文件操作
文件链接
目录访问
小结
在原来linux系统中访问文件时用来代表文件的数字,它是系统资源,系统会限制打开的文件
描述符的数量.
Perl中只在某些系统调用时才使用它.
功能同文件描述符一样,但是与文件描述符不是同一个东西,perl使用文件句柄来代表文件.
文件描述符与文件句柄互相转化:
文件句柄=>文件描述符:fileno(F):返回文件描述符.
文件描述符=>文件句柄:open(F,”>&n”).
文件:存放在磁盘上,永久存储数据,用于读写访问。访问前要先打开文件,
结束后关闭文件.
open(HANDLE,”>filename”)||die $!; 成功返回非零,失败返回零.
不以$,@,%类的符号开头,可能与关键字if等重名,故一般用大写字母.
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的输入。
说明:
1.不含路径的文件名前的空格可以忽略,但有路径的文件名不能。
2.可以用变量来代表文件名.
3.特殊的文件名如”>file”,可能使读变成写,使用变量代表文件名时注意过滤文件名.
4.复制文件句柄:open(F,”>&STDOUT”),写入F文件的内容都变成写入屏幕STDOUT
5.使用文件描述符:open(F,”>&3″),把文件描述符复制成句柄,或者”>&=3″
6.open() 打开成功返回非零,失败返回零.
open()||die “error $!” 成功时不执行die,失败时执行.
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):最后要关闭文件,隐含关闭文件,重打开已经打开的,先关闭再打开,程序退出
自动关闭,这时才真正写文件。
满再真正写入磁盘.一般在关闭时缓冲内容才开始写入磁盘,称为刷新,结果是用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去除此字符串.
read(F,$in,len[,$offset] 读入$in
sysread(F,$in,len[,$offset])
getc(F)读一个字符
1.第一次看到<>时,打开以$ARGV[0]中的文件,无参数则打开STDIN读,所以可以省略.
2.shift(@ARGV)元素数量减少一个.
3.<>读打开的文件中的所有行
4.再读第二个参数表示的文件
5.文件尾检测:eof和eof(),文件结束返回真.
@ARGV=(“file1″,”file2″)
while($line=<>){if(eof){print ‘eof’;}}
读取file到末尾时,下一循环打开下一文件,每次读完一个文件输入出eof
if(eof()){print ‘eof’;}所有文件都读完才输出eof
print F (“str”)
str输出内容,可用单引号’,不进行变量替换,不加引号,计算出变量的值再输出。
()可省略,这是函数的特点.
write 用于格式化输出,不是read的相应操作.
syswrite(F,$data,length,$offset) 同sysread
mode=4位8进制数,unix中的文件owner,组,其它的设置。
chown(userid,groupid,filelist)改变文件的用户与组。
umask(maskval):返回原mask,unix中的umask值设置。
tell(F):当前位置.
seek(F,distance,pos):定位到指定位置.
F文件句柄,pos=0相对文件头,1相对当前位置,2相对文件尾.
distance相对pos表示的位置多少字节.
-d是否为目录 -e文件是否存在
-f是否为普通文件 -g是否设置了setgid位
-k是否设置了sticky位 -l是否为符号连接
-o是否拥有该文件 -p是否为管道
-r是否可读 -s是否非空
-t是否表示终端 -u是否设置setuid位
-w是否可写 -x是否可执行 -z是否为空文件
-A距上次访问多长时间
-B是否为二进制文件
-C距上次访问文件的inode多长时间
-M距上次修改多长的时间
-O是否只为”真正的用户”所拥有
-R是否只有”真正的用户”可读
-S是否为socket -T是否为文本文件
-W是否只有”真正的用户”可写
-X是否只有”真正的用户”可执行
-s返回文件长度,-A-C-M返回的天数.
0 dev 设备号 c:=2,d:=3
1 ino 索引节点 总是0
2 mode 模式 无
3 nlink 链接号 0
4 uid 文件所有者 0
5 gid 文件组 0
6 rdev 特殊文件信息,设备类型 驱动器号
7 size 文件大小 文件大小
8 atime 上次访问时间 上次访问时间
9 mtime 上次修改时间 上次修改时间
10 ctime inode修改时间 文件创建时间
11 blksz 磁盘块大小 0
12 Blocks 文件的块数 0
@a=glob(“*.txt”)返回与模式匹配的所有文件目录,如果赋值给简单变量则一次返回一个文件。
参数可以是文件名或目录.
只能接受有限的文件数,报文件太多错误,用shell来执行。
因为用shell来解释执行,故运行速度慢。
另一种形式是@a=<*.txt>是古老的用法,推荐用glob.
则不做任何事.其中filename可以为文件名,也可以为文件变量.
-e “file2″||rename(file1,file2) 先检查再移动
创建现有文件的链接-硬链接,file是被链接的文件,newlink是被创建的链接。
成功返回真,失败返回假.
当删除这两个链接中的一个时,还可以用另一个来访问该文件。
文件本身,当原文件被删除(如:被unlinke函数删除),则被创建链接不可用,除非再创建
一个与原被链接的文件同名的文件.
Readlink(linkname)跟踪符号链接,如果linkname为符号链接文件,返回其实际指向的文件。
否则返回空串。
实际删除的文件数目.
此函数之所以叫unlink而不叫delete是因为它实际所做的是删除文件的链接。
参数为:
dirvar:目录变量,dirname:目录名,成功返回真值,失败返回假。
closedir(dir):关闭目录
readdir(dir):对数组返回所有文件和目录,对简单变量每次返回一个文件或目录,不含当前路径。
chdir(dir):改变目录,运行完返回原目录,成功为真,失败为假.
telldir(dir):当前目录位置
seekdir(dir,loc):到指定位置
rewinddir(dir):目录位置指向目录第一项.
mkdir(dirname,permission):创建目录(当前目录,访问权限)
rmdir(dirname):只能删除空目录,成功则返回真,失败返回假.
2.文件访问:打开,关闭,读,写,随机访问
3.文件操作:测试,改名,截取,链接.
4.目录操作:同文件.
5.相关技术:错误函数及变量,文件打开函数,命令行参数,glob的扩展.
- perl读文件
- perl基础学习-读文件
- perl遍历文件
- perl 之文件参数
- perl 文件,目录操作
- Perl中的文件操作
- Perl 处理excel文件
- perl TU文件说明
- perl读取excel文件
- perl批处理xml文件
- perl文件读写
- 文件改名的Perl
- perl 修改文件内容
- 文件操作函数[perl]
- Perl-15---文件操作
- PERL文件操作
- perl 写多个文件
- perl 读写文件
- 1744
- 将程序最小化到系统托盘
- 最近在做多媒体播放器时发现VC里没有ActiveMovieControl Object这个控件,可进行如下操作:
- FileGDB API for linux 学习系列之二,编译Display例子程序
- 互联网产品设计进阶(5)关于用户体验(边思考边完善)
- perl读文件
- APK反编译
- Scilab中查看当前空间的变量
- 待看文档
- jqGrid参数
- 最近搞些初学读物看看
- C++数组取地址问题!
- Linux下MySQL的使用(1)
- 2011年的第一场雪