由于公司需要,本人最近在学习Perl这种脚本语言,本文是我在学习Perl的过程中总结出来的一些心得和笔记,希望能够帮助也在学习Perl的各位同僚。废话不多说直接上干货!!!

——————————————————————————— 干货分割线 —————————————————————————

打开文件:

若要在P e r l中读取文件或写文件,必须打开一个文件句柄。P e r l中的文件句柄实际上是另一种类型的变量,它们可以作为在你的程序与操作系统之间对某个特定文件使用的非常方便的一个引用(即句柄)。句柄包含了关于如何打开文件和你在文件中读(或写)到了什么位置等信息。它们还包含了用户定义的关于如何读写文件的属性。句柄必须使用大写字母,以防与其他关键字冲突。

打开文件句柄:open(句柄,文件路径)。若路径不是完整路径,则打开当前目录中的文件。Open函数运行成功返回非0值,失败返回undef。

关闭文件句柄:close(句柄)

在Wi n d o w s和M S - D O S系统下,设定P e r l中的路径名时可以使用反斜杠作为路径名分隔符,正确方法比如\\ Wi n d o w s \\ u s e r \ \p i e r c e \\ n o v e l . t x t。需要注意的问题是:当在带有双引号字符串中使用反斜杠分隔符路径名时,反斜杠字符序列将被转换成一个特殊的字符。

读取文件

读取文件句柄有两种方法:

1.用尖括号运算符< >)。将文件句柄放入< >,并将该值赋予一个变量:

Open(MYFILE,”myfile”) or die “Cannot open myfile:$!\n”;

#warn语句输出警告,用法同die.程序不停止,只发出警告。

#Open(MYFILE,”myfile”) or warn“Cannot open myfile:$!\n”;

$line =<MYFILE>;

读取和输出整个文件(标准写法):

while(defined($a = <MYFILE>)){print $a;
}

简化版:

while(<MYFILE>){print $_;
}

2.用read()函数读取


打开文件

Open(句柄,”>pathname”);#重写(即源文件有数据将会被覆盖)

exp:

open(MYFILE,">C:/Users/YouZis/Desktop/test.txt"); #打开目录在C:/Users/YouZis/Desktop下的文件名为test.txt的文件

Open(句柄,”>>pathname”);#追加写(即新写入的数据追加在源文件数据后面)

写入文件:

print filehandle LIST;  #filehandle为要写入的文件句柄,list为数据列表

Exp:

open(LOGF,">C:/Users/YouZis/Desktop/t.txt") or die "$!";
if(! print LOGF "this entry was written at ",scalar (localtime),"\n"){warn "Unable to write to the log file:$!";
}
close (LOGF);

结果为:

在此例子中,"this entry was written at "和scalar (localtime)和"\n"为数据列表。

Ps:scalar (localtime) 此函数将当前时间转化成日历格式

Exp:

#文件拷贝
open(SOURCE,"C:/Users/YouZis/Desktop/test.txt") or die "$!";
open(DEST,">C:/Users/YouZis/Desktop/dest.txt") or die "$!";
print DEST <SOURCE>;


二进制句柄处理:

binmode(filehandle);  #将文件句柄转换为二进制格式,在文件句柄打开之后和对他进行输入输出之前使用该函数,且只能对文件句柄使用一次该函数。若不能区分文件为二进制或者是文本文件使用binmode函数不会造成任何伤害。

Exp:

open (PHO,"C:/Users/YouZis/Desktop/test.gif") or die "$!";
open(DEST,">C:/Users/YouZis/Desktop/dest.gif") or die "$!";
binmode (PHO);
binmode (DEST);
print DEST <PHO>;

该程序功能为复制粘贴二进制文件。第一行第二行分别为打开源文件和目标文件,第三行第四行将源文件和目标文件转换成二进制格式。第五行将源文件输出到目标文件。

文件测试运算符:

-X filehandle

-X  pathnam

Exp:

print "是否为文件?\n";
$filename = <STDIN>;
chomp $filename;
if(-s $filename){warn "$filename contents will be overwritten\n";warn "$filename was last updated ",-M $filename," days ago.\n";
}

Perl语言入门(05 文件)相关推荐

  1. C/C++语言入门篇 -- 文件操作

    最近实在是太忙了,这篇整整就推迟了1个月了,实在是对不起.之前本打算这个模块就结束了,文件操作就不写了,但是文件操作又是一个很重要的东西,而且也刚好能够总结之前我们学习的所有知识.同时也为了将文件操作 ...

  2. Learning Perl(Perl语言入门)学习笔记(3)

    第四章 子例程   1.  子例程(subroutine)即用户自定义函数,子例程调用时通常在子例程名前加上"&"符号:子例程名属于独立的命名空间: 2.  子例程可以在程 ...

  3. 开发日记-20190708 关键词 读书笔记 《Perl语言入门》Day 5

    Preface 进度两章,看来搞定这本书真的是需要话一些时间的.十天左右吧.怪我没弄实体书呗. Content 我们已见过并用过一些内置的系统函数,像chomp,reverse和print等. 但是, ...

  4. 开发日记-20190706 关键词 读书笔记 《Perl语言入门》Day 3

    Preface 感觉Perl上下文的概念其实挺有意思的,有点像大陆法系和英美法系之间的关系那样扑朔迷离.Perl的感觉在目前给我的感觉是,他更相信人,他认为只要是实际的操作者用的更爽,那这个东西就是最 ...

  5. 读书笔记 《Perl语言入门》 Day 1

    Preface 给我三天,我搞定Perl基础,毕竟是从C过来的(虽然C学的不咋滴= =). Larry为什么要创造Perl? 20世纪80年代中期,Larry想要为类似新闻组的文件体系写一个bug汇报 ...

  6. 开发日记-20190705 关键词 读书笔记 《Perl语言入门》Day 2

    Preface Content 运行程序时,Perl内部的编译器会先载入整个源程序,将之转换成内部使用的bytecode,这是一种Prel在内部用来表示程序语法树的数据结构,然后交给Perl的byte ...

  7. 开发日记-20190716 关键词 读书笔记 《Perl语言入门》Day 10

    文件测试操作符及其意义 文件测试操作符 意义 -r 文件或目录,对目前(有效的)用户或组来说是可读的 -w 文件或目录,对目前(有效的)用户或组来说是可写的 -x 文件或目录,对目前(有效的)用户或组 ...

  8. 开发日记-20190710 关键词 读书笔记 《Perl语言入门》Day 7

    Preface Content 用m//进行匹配 我们用双斜线的写法表示模式,比如/fred/.但事实上,这是m//(pattern match operator,模式匹配操作符)的简写. 但是尖括号 ...

  9. 开发日记-20190709 关键词 读书笔记 《Perl语言入门》Day 6

    Preface 麻麻,今天Perl进度推进了两章,Linux进度推进了一章,我这下班进度.高起来我自己都吓一跳.早点睡觉吧!还有,用知识武装自己,而不是欲望. Content 什么是正则表达式? 正则 ...

  10. Perl 语言入门6-9

    ---- 第6章 哈希----------- 简介 键值对.键和值都是任意标量,但键总是会被转换成字符串. 键唯一,值可重复. 应用场景:一组数据对应到另一组数据时. 如找出重复/唯一/交叉引用/查表 ...

最新文章

  1. 深度学习两大基础Tricks:Dropout和BN详解
  2. 获得目录下文件数和文件行数
  3. [改善Java代码]在接口中不要存在实现代码
  4. .NET手记-JS获取Url参数
  5. 硬盘突然提示没有初始化_新硬盘的分区
  6. 约翰·格伦:77岁宇航员的传奇一生
  7. buntu下shell脚本运行异常:bash和…
  8. TCP/IP协议都有哪几层协议
  9. Office | Word中插入参考文献
  10. 计算机组成原理MIPS
  11. 三十分钟理解:稀疏矩阵存储格式总结+存储效率对比:COO,CSR,DIA,ELL,HYB
  12. 公众平台 python_轻松实现python搭建微信公众平台
  13. PostgreSQL multixact日志管理器说明
  14. servlet的创建及配置
  15. 数据库系统概论(第五版)重点总结,期末考试也可以用
  16. STM32的复位与电源管理
  17. nginx配置文件解释(转载隔壁老梁)
  18. ubuntu 一键挂载U盘到系统
  19. php 下载微信语音文件怎么打开软件,微信群讲课或语音讨论交流 如何把大家讲的微信语音合成一个音频文件mp3格式...
  20. 新手上路:ADAMS 基础知识讲解(图文并茂)【转载仿真论坛】(三)

热门文章

  1. 万能表单资料管理系统
  2. 现代 JavaScript 教程
  3. C语言程序设计题库(精心准备,内容丰富)
  4. delphixe android服务,delphi xe10 android服务gps [复制]
  5. C++ Web编程实战
  6. 一文详解:java认证考试报名费用
  7. Iocomp VC2017 - 5.12版本Crack
  8. python 灰度图像转彩色_彩色图像--伪彩处理 灰度图转伪彩色图像
  9. Go语言精进之路:你知道什么是Go语言编程思维吗?
  10. 什么是开放源代码,以及为什么不使用开放源代码?