Your Ad Here
首页 | 编程语言 | 网站建设 | 游戏天堂 | 冲浪宝典 | 网络安全 | 操作系统 | 软件时空 | 硬件指南 | 病毒相关 | IT 认证
软讯网络 > 编程语言 > 其他编程语言 > perl学习笔记9
【标  题】:perl学习笔记9
【关键字】:perl
【来  源】:http://www.cublog.cn/u/26431/showart.php?id=276822

perl学习笔记9

Your Ad Here

1.  文件句柄:

Perl简单的认为文件是由一系列的字符组成。每个文件用一个文件结束标志来结束这个文件。从某种意义上来说,文件句柄类似于变量,只是它们不加任何特殊的字符前缀。因此,文件句柄通常使用大写字母出现。

事实上,有3种句柄在程序开始运行时就自动打开,分别是STDINSTDOUTSTDERR

 

2.  打开会和关闭文件句柄

使用open函数打开文件。语法如下:

 

open  ( HANDLE, ‘filename’)  or  die  (“Cannot open file: $!”)

 

参数HANDLE,是文件句柄,用于引用需要打开的文件。

参数filename,需要打开的文件名和路径信息。

如果open函数不能打开文件,将触发die命令。输出储存在特殊变量$!中保留的最后一次系统错误信息并终止程序运行。

 

程序中可以同时处理一个或多个数据文件。但每个文件都应对应唯一的文件句柄,而且,必须用一个open语句打开。

 

文件可以通过在文件名前加前缀,以多种方式中的一种打开。

 

方式

说明

< 

打开一个文件,以便读取内容

> 

打开一个文件,以便向其中写入。如果文件已存在,那么先丢弃其中的内容。

>> 

追加记录。打开或创建一个文件,以便在文件的结尾处写入新内容

+<

打开一个文件以便更新(读写)

+>

创建一个文件以便更新。如果文件存在,则丢弃其中内容

+>>

追加。打开或创建一个文件以便更新。在文件的末尾写入新内容。

 

打开一个文件句柄后,最好也显式地关闭文件句柄。语法如下:

              close  ( FILE )  or  die ( “Cannot close file: $!);

 

3.  使用文件句柄

Ø         使用<>运算符读取文件,只需将文件句柄放在<>中,当它发现一个匹配特殊变量$/的字符时,结束读取。特殊变量$/默认值为\n。如果使用<>运算符,并将一个列表作为其返回值,那么它将从文件中读取与列表中项数相同的行数。

注意:当从文件中读取数据时,记住字串中已经有了一个追尾换行符。如果要使用这些数据,最好用chomp函数移除追尾的换行符。

 

Ø         使用print函数将信息输出到一个文件句柄所分配的文件中。Print接受两个参数,第一个参数是文件句柄,第二个参数是一个字串。函数将第二个参数中的字串输出到第一个参数所指向的文件中。为了使这个语句运行,文件必须以写方式或追加方式打开。

 

Ø         print  while  ( < INFILE > ) ;

这个结构非常有用,他从文件中顺序读取数据,用存储在变量$_中的默认值来输出文件中的每一行。当<>出现在“while条件”时,文件中读取得数据赋给特殊变量$_Print函数输出特殊变量$_中的内容。直到<>符从文件获得文件结束指示。

 

Ø         使用句柄时,应注意文件句柄不能作为参数传递给函数的。有两种方法补救这个问题。一种是把文件名传递给函数。函数可以用它来创建一个本地文件句柄,然后打开。另一种方法就是使用引用。

 

4.  @ARGV特殊变量

<>运算符中没有声明任何的文件句柄时,perl就从一个称为@ARGV的特殊变量中获取文件名。这个数组变量存储所有的命令行参数,也就是在运行时提供给程序的字串。例如:

              perl  fig10_06.pl  in.txt

传递个程序的命令参数就是出现在程序正后面的数据项(或数据项列表)。

如果没有提供任何命令行参数,也就是@ARGV为空,<>将从标准输入STDIN中读取数据。如果把STDIN作为输入,那么用户必须按下“文件结束”键(在win中是ctrl+Z;在UNIX/Linux中是ctrl+D)来终止程序。

 

5.  从文件中读取数据的其它方法

<>运算符不是从文件中读取数据的唯一方法。

Ø         Read FILE, $input, 80

这个函数可以从文件FILE中读取80个字节,并将它存储在$input中。

Ø         Getc FILE

这个函数可以从FILE中读取一个字符,并返回该字符。

Ø         吞吃文件

一种方式是在“列表使用场合”下使用<>运算符,导致将文件中的每一行放入数组的每个单元中。

另一种方式是更改特殊变量$/中的值。但一定要在使用完恢复它的默认值。(local指令???

 

6.  实现一个随机访问文件

主要使用以下三个函数:

Ø         tell函数

函数tell用来确定文件中当前位置(亦即第一条记录后的那个字节)。Tell返回的值也是记录长度的字节数。

       $length = tell ( FILE );

如一条记录有3个字节长度,字节012。因而,文件中的当前位置是3,这就是一条记录的长度。

Ø         seek函数

如果记录的长度已知,函数seek可用于查找文件中的任何记录。

函数seek接受3个参数:filenameoffsetmethod

Offset是在文件中确定新的当前位置时,所需移动的字节数。这个数一般可以这样计算:所需跳过的记录数乘以记录的字节数。

Method指出要开始查找的位置:

0表示从文件开始处计算;

1表示从当前位置开始计算;

2表示从文件结束出开始计算(这种情况下,offset一般为负数)。

                           

例如:

                                          seek  ( FILE,  5*$length, 0 )

执行后,他会使用计算式5*$lengthmethod0来跳过文件的前5条记录,把第6条记录作为文件的当前位置

                    

Ø         truncate函数

truncate函数接收两个参数:一个文件句柄和一个文件字节位置。它从文件字节处开始移除记录,直到文件结束。

 

 

《Java理论与实践》第五章(第一次更新):【上一篇】
php中变量的引用 &$var:【下一篇】
【相关文章】
  • perl学习笔记6
  • 开始学perl,第三天
  • perl学习笔记7
  • perl学习笔记8
  • Perl start
  • 一个perl的密码生成器
  • Win32环境下 Perl DBI安装
  • 发布一个CHyperLink类,可适应SDK和MFC
  • 在Linux系统上安装Perl DBI支持
  • PERL的资源不完全索引
  • 【随机文章】
  • 微软印度:免费获取Windows Vista Beta 2光盘
  • 中国当代教育弊病的根源在于其功利性!
  • PreparedStatement 接口
  • 简介爆破软件(2)
  • hiernate 中联合查询,得到的list是一个对象数组,这样需要进行适当处理来取值。
  • encodeURI/decodeURI与UrlEncode/UrlDecode,噩梦在继续
  • NBearV3教程——MVP(Model/View/Presenter)篇
  • 越狱第二季-01
  • 轻松提高Win 2003的运行速度
  • sipX and asterisk
  • 【相关评论】
    没有相关评论
    【发表评论】
    姓名:
    邮件:
    随机码*
    评论*
          
    |  首 页  |  版权声明  |  联系我们   |  网站地图  |
    CopyRight © 2004-2007 bbb软讯网络 All Rigths Reserved.