0

Perlで行数を数える方法を教えてください。

例:

ファイル a.txt

ikhsan
faqih 
kamal 
jundi
iqbal

ファイル b.txt

ikram
izzul
ibnu
qoyyim

問題は、Perl で 2 つのファイルのすべての行をカウントする方法です。

1つのファイルを読みたいだけの場合、私のコードは次のとおりです。

ここに私のdata.txtがあります

a
b
c
d

私のコード

open (FILE, "data.txt") or die "Can't open file: $!";

my ($lines) = (0);
while (<FILE>) {
  $lines++;
  print $lines;

そして私が実行した場合:perl countlines.pl

C:\perl> perl countlines.pl
4
C:\perl>

2つのファイルのすべての行を数える方法は私の問題ですか?

4

2 に答える 2

2

これは、任意の数のファイルで機能します

perl -lne 'END { print $. }' a.txt b.txt

使い方

-ln フラグを指定すると、perl は次のようなスクリプトとしてコンパイルされます。

BEGIN { $/ = "\n"; $\ = "\n"; }
LINE: while (defined($_ = <ARGV>)) {
    chomp $_;
    sub END {
        print $.;
    }
    ;
}

これは、指定されたファイルのリスト内のすべてのファイルをループし、何もしません!

$.しかし、読み込まれた行数のカウンターである特別な perl 変数があります。

したがって、スクリプトの最後に、これが出力され、ファイル内の合計行が表示されます

于 2013-06-30T07:53:07.723 に答える
1

次の場合は自動フォームを使用することをお勧めします<>

$count++ while <>;
print $count;

使用法:

perl countlines.pl a.txt b.txt

手動で行いたい場合は、プロセスを繰り返すだけです。

my ($lines) = (0);
open (FILEA, "a.txt") or die "Can't open file: $!";
while (<FILEA>) { $lines++; }
open (FILEB, "b.txt") or die "Can't open file: $!";
while (<FILEB>) { $lines++; }
于 2013-06-30T06:12:34.537 に答える