Perl 文件句柄总结
来源:互联网 发布:淘宝免费教学 编辑:程序博客网 时间:2024/05/22 14:04
转载出处: http://blog.chinaunix.net/uid-21012962-id-86204.html
句柄handle 分为文件句柄和目录句柄,文件句柄实际上包含文件,进程和套接字的读写。
句柄handle 分为文件句柄和目录句柄,文件句柄实际上包含文件,进程和套接字的读写。
文件句柄的操作步骤
open(FD,"filename");
@lines=<FD>;
close(FD);
open()由以下几个用法
open(FD,"> filename") 写数据进文件
open(FD,">> filename") 追加数据进文件
open(FD,"filename") 读文件
open(FD,"process |") 读进程结果
open(FD,"| to process") 往进程中写数据,不过对WINDOWS系统写会有问题
$line=<FD> 获取起始行
如果要遍历整个文件
while (defined $line=<FD>) {}
@lines=<FD> 将整个文件放入lines数组中
可以使用FileHandle包,可以避免变量覆盖的现象。
use FileHandle;
$fileHandleName= new FileHandle("filename");
$line=<$fileHandleName>;
close() 关闭文件句柄
实际上,perl会在句柄超出范围或程序结束时,自动关闭。
写入操作
print (@arrayName) 或 print FILEHANDLENAME (@arrayName)
也可以用以下方式来写入
foreach $line(@arrayName)
{
print FILEHANDLENAME "$line\n";
}
使用$line的好处是,程序在运行时,会将$line的值立即放入文件中。而使用@arrayname的方式会先放入缓存中累积,如果出现进程中断,会倒是输出数据丢失。如果要避免这个问题出现可以把$|设置为1
对二进制文件的读写
使用binmode FILEHANDLE
具体实例
open(IN_FD,"test.gif");
open(OUT_FD," > copy.gif");
binmode(IN_FD);
binmode(OUT_FD);
while(read(IN_FD,$buffer,1024){
print OUT_FD,$buffer;
}
close(IN_FD);
close(OUT_FD);
select(FILEHANDLE) 用于设定输出的默认句柄
在select指定句柄后,随后输出在默认情况下,会输出到指定的句柄
open(FD,"> newfile");
select(FD);
print "test"; #将test添加到newfile中
select(STDOUT);
print "ok"; #将ok输出到屏幕
flock()文件加锁,只适用unix,其他系统或网络文件可能无效
1 创建共享锁 2 创建排他锁 4 创建非阻塞锁 8 排除当前锁
open(FD,">> inputfile");
flock(FD,2);
print FD "test string";
flock(FD,8);
close(FD);
seek()使用,可以让文件指针指向到指定位置
seek(FILEHANDLE,BYTEOFFSET,FILEPOSITION)
BYTEOFFSET 用于位移值,可以是正负值
FILEPOSITION 位置值,0表示到文件开头,1文件中的当前位置,2文件末尾位置
tell()返回文件中当前字节的位置
打开文件进行读写的操作
open(FD,"+<filename") 先读后写
open(FD,"+>filename") 先写后读
open(FD,"+>>filename") 先追加后读
0 0
- Perl 文件句柄总结
- perl 打开文件句柄
- perl 文件句柄
- perl 文件句柄
- perl文件句柄参数传递
- [NPWP笔记]perl函数使用文件句柄
- Perl中的文件句柄“只能用一次”
- Perl: 什么时候需要 close 文件句柄?
- Perl文件句柄和文件描述符
- perl内置的DATA文件句柄
- perl 文件操作总结
- Perl 循环内没关闭文件句柄引发的问题
- perl 没有关键文件句柄引起的逻辑错误
- perl dbm文件操作总结
- perl dbm文件操作总结
- Perl句柄学习
- linux最大文件句柄数量总结
- linux最大文件句柄数量总结
- 移动支付宝的集成思路
- Win8.1下OpenCV2.4.9+Qt5.3.2开发环境搭建
- Hive几种数据导入方式
- flask - 生成 secret key
- cocos2dx ios 视频播放器 2.x到3.x版本都可以使用
- Perl 文件句柄总结
- 基于Tomcat7的WebSocket的程序
- iTunes显示歌词
- IOS 学习笔记 Collection之NSArray1
- RAC(Oracle网格计算技术)
- CALayer 基础
- hdu 1003 Max Sum (最大连续子序列)
- 力所能及之拦截过滤登陆
- gdb 多线程调试