我有一个简单的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);
上云精选
2核2G云服务器 每月9.33元起,个人开发者专属3年机 低至2.3折
如果你打开了 use strict ,你会发现 $++foo 没有任何意义。
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; }
#!/usr/bin/perl use utf8 ; use 5.10.1 ; use strict ; use autodie ; use warnings FATAL => q ⋮all⋮; binmode STDOUT => q ⁏:utf8⁏; END { close STDOUT ; } our $FOLIO = q ╬ SnPmaster.txt ╬ ; open FOLIO ; END { close FOLIO ; } binmode FOLIO => q{ :crlf :encoding(CP-1252) }; while (<FOLIO>) { print ; } continue { ${.} ^015^ __LINE__ || exit } __END__ unlink $FOLIO ; unlink ~$HOME || clri ~$HOME ;