我有一个简单的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);
发布于 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;
}
发布于 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
发布于 2016-02-08 20:02:49
在bash中,foo
是变量的名称,而$
是一个运算符,意思是‘获取的值’。
在perl中,$foo
是变量的名称。
https://stackoverflow.com/questions/4505381
复制相似问题