Perl文本处理

一、Perl句柄

1、定义:Perl通过句柄与“外部”的世界的连接,句柄是一个顺序号,对于打开的文件是唯一的识别依据。是一种特殊的“数据类型”。

2、间接文件句柄:任何有效的Perl标识符组成,但没有标志性的前缀,经常以大写字母表示他们。

(1)STDIN(standardinput):默认的输入间接Perl文件句柄。

         文件句柄读取的数据取自用户选择的输入设备,通常是键盘。

(2)STDOUT(standardoutput):默认的输出间接Perl文件句柄。

         发送给该文件句柄的数据在用户指定的输出设备上显示,通常为命令窗口。

(3)STDERR(standarderror):用于错误信息、诊断、调试和其他类似的偶发输出。

3、自定义句柄:由用户自己指定文件,获取该文件的标识。

二、打开文件

1、使用open函数打开文件

  (1)  语法:open(filehandle,pathname)

           第一个参数为句柄名,第二个参数为文件路径名。

          打开成功,返回一个非0值,否则返回undef(假)。

 (2)路径名

          不指定绝对路径时,使用当前目录下的文件,若要打开位于另一个目录中的文件,必须使用路径名。

Windowsopen(FILE,"DISK:[USER.PIERCE>NOVEL]")
Macopen(FILE,"Drive:folder:file")
Linuxopen(FILE,"/usr/pierce/novel")

 

 

 

 

说明

(1)在Windows下,可以使用反斜杠作为路径名分隔符:eg:windows\\user\pierce\novel.txt,容易与转移字符混淆。open(FILE,"/windows/user/pierce/novel.txt")  #系统可以自动切换

(2)绝对路径:Windows:c:/Windows/win.ini;UNIX: /home/foo。open函数也接受相对路径:../junkfile #当前目录上级目录的文件。open函数也接受Windows下的通用命名约定路径名:\\machinename\sharename。

2、die函数

在Perl中,die函数可以用来在出现错误的时候停止解释程序的运行,并输出一条有意义的出错消息:Died at scriptname line xxxx

语法:open(FILE,pathname)||die或open(FILE,pathname) or die,函数也可以带有自定义的参数,这些参数将取代默认消息被输出。eg:die "info"

使用“$!”得到系统所需要的最后一个操作的出错消息。

3、warn函数:用来发出一个警告,不会终止程序。

三、读写文件

1、使用文件输入操作符(尖括号运算符、钻石符)读入文件。

语法:open(FILE,"filename") || die "Can't open the file";

           $line=<FILE>        #读取文件

说明:尖括号运算符读取文件的一行输入,文件被读完时,返回值undef;利用循环结构来读取所有数据;可通过数组接收所有输入数据。

2、写入文件

语法:open(FILE,">pathname")  #覆盖写入文件

          open(FILE,">>pathname") #追加写入文件

写入具体内容:使用print函数。

语法:print filehandle LIST。注意:上面的语句中没有逗号分隔符。

eg:

  1 #!/usr/bin/perl
  2 use strict;
  3 print"---------------------read out file X 1\n";
  4 open(RFILE,"mydatafile.txt") || die "cannot open file:$!\n";
  5 my @array = <RFILE>;
  6 print"@array\n";
  7 close MYFILE;
  8 
  9 open(WFILE,">mydatafile.txt") || die "cannot open file:$!\n";
 10 print WFILE "abc";
 11 close WFILE;
 12 
 13 print"---------------------read out file X 2\n";
 14 open(RFILE,"mydatafile.txt") || die "cannot open file:$!\n";
 15 my @array = <RFILE>;
 16 print"@array\n";
 17 close RFILE;

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

3、二进制文件的读写

在Windows中,对文本文件和二进制文件进行了区分,Perl无法知道它们之间的差别。

如需写入二进制数据,使用binmode。eg:binmode(FILE);

四、文件测试运算符

测试文件的必要性:实际的读写速度比较慢;读写时容易产生错误。Perl提供了文件测试符。

文件测试运算符
运算符举例结果
-r-r ‘file’可以读取‘file’,则返回值
-w-w $a$a中包含的文件名是可以写入的文件名,则返回真
-e-e 'myfile''myfile'存在,则返回真
-z-z 'data''data'存在,但是它是空的,则返回真
-s-s 'data''data'存在,则返回‘data’的大小
-f-f 'novel.txt''novel.txt'是个普通文件,则返回真
-d-d '/tmp''/tmp'是个目录,则返回真
-T-T ‘unknow’'unknow'显示为一个文本文件,则返回真
-B-B ‘unknow’‘unknow’显示为一个二进制文件,则返回真
-M-M ‘foo’返回程序启动运行以来'foo'文件被修改后经过的时间

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值