+ -
当前位置:首页 → 问答吧 → 求助,perl读取文件的问题

求助,perl读取文件的问题

时间:2011-03-21

来源:互联网

读取一个文件:
  1. #!/usr/bin/perl -w
  2. open(FH,"1111.txt");
  3. while($line=<FH>){
  4.         print $line;
  5. }
复制代码
这样写,或者直接:
  1. #!/usr/bin/perl -w
  2. open(FH,"1111.txt");
  3. while(<FH>){
  4.         print <FH>;
  5. }
复制代码
都没问题,但是稍微改动一下:
  1. #!/usr/bin/perl -w
  2. open(FH,"1111.txt");
  3. while(<FH>){
  4.                $line=<FH>
  5.         print $line;
  6. }
复制代码
读取出来的文件就会有丢失的情况。这是什么原因呢?这2种写法有什么区别吗?
后面一种写法也时准时不准的,跟1111.txt源文件好像还有关系。

作者: telecomshy   发布时间: 2011-03-21

第二第三都不对。

作者: ziyunfei   发布时间: 2011-03-21

while(<FH>)会读一行文件,存放在$_里
print <FH>又会读一行文件,直接显示在屏幕上
$line=<FH>也会读一行文件,存放在$line里
这样说明白么,呵呵

作者: 珞水的大叔   发布时间: 2011-03-21

本帖最后由 telecomshy 于 2011-03-21 17:25 编辑

刚测试了一下。假设1111.txt内容为
1
2
3
4
5
6
用第一种方法,全部正确读取。
第三种方法,读取为
2
4
6
可以理解。
用第二种方法,读取为
2
3
4
5
6
果然如此,了解了。第三种真是有意思。我理解是while(<FH>)以后,等print的时候,已经是第二行,而print以后却不会换行,下次while从第二行读取,所以总是第一行没有。不知道是否正确。

我的天呀,合着我弄的几个小东西起码少读取了一半的内容。

作者: telecomshy   发布时间: 2011-03-21