【问题标题】:perl reading each line in a file using $_ not workingperl 使用 $_ 读取文件中的每一行不起作用
【发布时间】:2017-03-08 03:00:59
【问题描述】:

我正在阅读“Beginning Perl:Simon Cozen 的在线书籍”。在下面的代码中,打印注释打印我的 data.txt 文件的所有行。但是我的 while 循环不打印任何东西。请帮我解决这个问题。

open(FILE,'data.txt');
my $line = <FILE>;
my @lines = <FILE>;
print @lines;

while (<FILE>) {
    print "$_";
}

【问题讨论】:

  • 请注意,您应该使用 3-arg open,执行错误检查,并使用词法文件句柄而不是裸词句柄:open my $fh, '&lt;', 'file.txt' or die $!;

标签: perl


【解决方案1】:

由于您已经阅读了文件并且现在处于“结束”状态,因此您需要关闭文件并再次打开它才能回到开头。

或者,在打开的文件上使用seek FILE, 0, SEEK_SET; 以在不关闭的情况下重置为开始并重新打开。 (使用use Fcntl qw( SEEK_SET ); 导入SEEK_SET。)

【讨论】:

  • 你也可以seek $fh, 0, 0;达到同样的效果。
  • @stevieb,当然,你可以用一个不起眼的神奇数字代替有意义的常数,但这很愚蠢。
  • 原始答案为seek FILE, 0, 0;,此后已被编辑过几次。我知道“0, 0”从那时起就起作用了,我想我们已经有了SEEK_CUR(对我来说听起来像“当前”?现在SEEK_SET这个问题,读起来很有趣(它是给我的)stackoverflow.com/questions/16556332/perl-seek-function
猜你喜欢
  • 2021-02-01
  • 1970-01-01
  • 1970-01-01
  • 2018-03-05
  • 2019-03-17
  • 1970-01-01
  • 2016-06-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多