关于perl的文件读取

来源:互联网 发布:批量条形码生成器软件 编辑:程序博客网 时间:2024/05/18 00:28

关于perl的文件读取

 

Perl语言操作文件是很常使用的操作,本文将介绍读取文件的一点小技巧。

本文将介绍两种读取文件的方法:

 

l  使用perl的内置函数readline

l  另外一种就是使用文件句柄直接操作"<EXPR>"

 

1.       使用readline

 

readline EXPR

readline

 

从文件句柄中读取数据,在标量环境中每一次从文件中读取一行记录,直到文件最后;在列表环境中,一次性将所有的文件记录全部读取。注意,我们可以使用“$/”来一次性的读取文件的所有记录。

 

当“$/”的值是undef时,readline返回文件中所有的行。

 

Readline实现了"<EXPR>"操作符的功能,当然你也可以直接的使用"<EXPR>"

例如下面的程序:

 

$line = <STDIN>;

                $line = readline(*STDIN);           # same thing

 

Readline遇到系统错误时,可以使用$!来返回错误,这在ttysocket错做的时候很有用。例如:

 

                    for (;;) {

                       undef $!;

                       unless (defined( $line = <> )) {

                           last if eof;

                           die $! if $!;

                       }

                       # ...

                }

 

下面是例子:

代码

#!/usr/bin/perl

 

use strict;

use warnings;

 

my $line;

open FH, "< F://gan//1234.log";

 

#$/ = undef;

while ( $line = readline FH ) {

    unless ( defined $line ) {

       next if eof;

       die $! if $!;

    }

    $_ = $line;

    s//s*$//g;

  s/^/s*//g;

    if ( $_ eq "" ) { next; }

    print $_, "/n";

}

 

close(FH);

 

F://gan//1234.log文件中的内容:

我们主要关注它的文件格式

  perl语言很强大

 

 

在文件操作中表现的非常优秀。

 

            1zzzzzzzzz

 

2xxxxxxxxx

 

所以,我们要好好的把它学习好!

 

运行结果

perl语言很强大

在文件操作中表现的非常优秀。

1zzzzzzzzz

2xxxxxxxxx

所以,我们要好好的把它学习好!

 

代码分析,我们从运行的结果可以看出,文件的格式变化了。在分析代码,首先来看黄色标记的代码

s//s*$//g;

s/^/s*//g;

使用的是s///,它的作用就是去除一行前端和尾部的空格。再来看蓝色标记的代码

if ( $_ eq "" ) { next; }

它的作用就是去除空行。最后再看粉红色标记的代码

#$/ = undef;

在这里我们把它注销掉,如果去除注销程序运行的结果就是如下所示:

perl语言很强大

 

 

在文件操作中表现的非常优秀。

 

            1zzzzzzzzz

 

2xxxxxxxxx

 

所以,我们要好好的把它学习好!

原因就是当#$/ = undef;得时候readine就会运行在标量环境中,将文件中所有的行当做一行全部读出。

 

原创粉丝点击