首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Perl逐行读取

Perl逐行读取
EN

Stack Overflow用户
提问于 2010-12-22 09:05:52
回答 4查看 305.2K关注 0票数 64

我有一个简单的Perl脚本,可以逐行读取文件。代码如下。我想显示两行并中断循环。但它不起作用。bug在哪里?

$file='SnPmaster.txt';
open(INFO, $file) or die("Could not open  file.");

$count = 0; 
foreach $line (<INFO>)  {   
    print $line;    
    if ($++counter == 2){
      last;
    }
}
close(INFO);
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2010-12-22 09:12:03

如果你打开了use strict,你会发现$++foo没有任何意义。

下面是如何做的:

use strict;
use warnings;

my $file = 'SnPmaster.txt';
open my $info, $file or die "Could not open $file: $!";

while( my $line = <$info>)  {   
    print $line;    
    last if $. == 2;
}

close $info;

这利用了特殊变量$.,该变量跟踪当前文件中的行号。(参见perlvar)

如果要改用计数器,请使用

my $count = 0;
while( my $line = <$info>)  {   
    print $line;    
    last if ++$count == 2;
}
票数 131
EN

Stack Overflow用户

发布于 2012-10-12 00:01:05

对于这些类型的复杂程序,最好让Perl为您生成Perl代码:

$ perl -MO=Deparse -pe'exit if $.>2'

它会很高兴地告诉你答案,

LINE: while (defined($_ = <ARGV>)) {
    exit if $. > 2;
}
continue {
    die "-p destination: $!\n" unless print $_;
}

或者,您可以简单地从命令行运行它,

$ perl -pe'exit if$.>2' file.txt
票数 12
EN

Stack Overflow用户

发布于 2016-02-08 20:02:49

在bash中,foo是变量的名称,而$是一个运算符,意思是‘获取的值’。

在perl中,$foo是变量的名称。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4505381

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档