句柄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") 先追加后读

perl学习之文件句柄filehandle的更多相关文章

  1. perl学习之:read

    perl read()函数例子,read()函数实例代码 - 读取,或试图读取,长度LENGTH 与文件句柄FILEHANDLE 相关联的文件到缓冲区BUFFER中的字节数. 语法 read FILE ...

  2. perl 学习笔记

    一:基础 1:安装perl      centos: yum -y install perl       官网:https://www.perl.org/      升级到5.22:先下载,执行./i ...

  3. perl学习(5) 输入和输出

    1.1. 从标准输入设备输入 <STDIN> 行输入操作在到达文件的结尾时将返回undef,在while循环的条件中不能使用chomp: while (defined($line = &l ...

  4. perl学习之路1

    一切要从Hollo world开始 公司要用perl....啊, 不会只能自学了, 毕竟是公司啊, 不是学校...公司不学习就滚蛋了...惨惨惨 因为是学习嘛, 感觉开虚拟机比较麻烦所以直接用了个 瘟 ...

  5. Perl的DATA文件句柄

    有太多次写完一个perl程序,需要另外新建一个文件来测试,每次觉得很繁琐,但又不得不这么做.没想到原来perl已经提供了解决方案,这就是DATA. 使用很简单,见下面这个例子: #!/usr/bin/ ...

  6. Perl 学习笔记-目标操作

    1.在目录树中移动. 程序运行时会以当前工作目录作为相对路径的起点, 可以使用  chdir 操作符改变当前目录: chdir "/etc" or die "Can't ...

  7. Perl 学习笔记-文件测试

    1.文件测试操作符 针对文件和目录的测试操作符: -r/-w/-x/-o: 文件或目录, 对有效的(负责运行这个程序的)用户或组来说是可读/写/执行/拥有 的; 这些测试位会查看文件的权限位, 以此判 ...

  8. Perl 学习笔记-高级控制结构

    1.unless控制结构 类似于独立的else语句; 要么条件为真, 要么执行语句块内的代码;  unless(<condition>){code...;} 等价于  if(<con ...

  9. Perl 学习笔记-输入输出

    1.读取标准输入<STDIN>(行输入操作=> 读取一行直到换行符) chomp($line = <STDIN>); # 读取一行并去掉最后的换行符(不会自动去掉) pr ...

随机推荐

  1. day03 内部类

  2. mongodb数据库分片实现链接

    http://www.lanceyan.com/tech/arch/mongodb_shard1.html

  3. 【模板】平衡树——Treap和Splay

    二叉搜索树($BST$):一棵带权二叉树,满足左子树的权值均小于根节点的权值,右子树的权值均大于根节点的权值.且左右子树也分别是二叉搜索树.(如下) $BST$的作用:维护一个有序数列,支持插入$x$ ...

  4. 109 Convert Sorted List to Binary Search Tree 有序链表转换二叉搜索树

    给定一个单元链表,元素按升序排序,将其转换为高度平衡的BST.对于这个问题,一个高度平衡的二叉树是指:其中每个节点的两个子树的深度相差不会超过 1 的二叉树.示例:给定的排序链表: [-10, -3, ...

  5. axios 访问和返回拦截,token处理,返回异常统一处理

    在axios文件夹中,index.js添加拦截 访问拦截: import store from '../store' axios.interceptors.request.use( config =& ...

  6. Codeigniter CI 框架的一些优化思考

    前段时间使用CI做了两个小项目,对CI的流程和设计理念也有了一些新的认识.CI架构的一些基本优化这里就不做介绍了,如搬离system 文件夹等. 最近有一个稍微大一点的系统,也准备拿CI来做.设计时遇 ...

  7. 【持续更新】CSS居中

    水平垂直居中 知道自身的宽度.高度 <div class="test"></div> <style> .test { position: abs ...

  8. 从零开始利用vue-cli搭建简单音乐网站(八)

    这是完成了预想中的最后两个功能:歌曲评论以及歌曲搜索. 1.评论效果: 用户点击评论按钮,评论框获取焦点. 输入之后点击提交,下方显示评论,用户名称以及日期.相应的用户也可以删除自己评论. 当然只能删 ...

  9. Objective-C language

    Objective-C is the primary language used to write Mac software. If you're comfortable with basic obj ...

  10. 基于H5+ API手机相册图片压缩上传

    // 母函数 function App(){} /** * 图片压缩,默认同比例压缩 * @param {Object} path * pc端传入的路径可以为相对路径,但是在移动端上必须传入的路径是照 ...