1

ファイルに繰り返し行が見つかった場合にメッセージを出力する/メールを送信するperlコードを書いています。これまでの私のコード:

#!/usr/bin/perl 
use strict;
my %prv_line;
open(FILE, "somefile") || die "$!";
while(<FILE>){
    if($prv_line{$_}){
         $prv_line{$_}++;
     }
    #my problem: print  I saw this line X times
    }
close FILE

私の問題:出力付きの静的メッセージを生成するにはどうすればよいですか:スクリプト出力を印刷せずに「この行をX回見ました」を印刷してくださいありがとう

4

2 に答える 2

2

おそらく、ここにあなたが望むものがあります:

#!/usr/bin/perl
use strict;
use warnings;

my %lines;

while(<DATA>) {
    chomp;
    $lines{$_}++; 
}

while (my($key, $value) = each %lines) {
    print "I saw the line '$key' $value times\n";
}

__DATA__
abc
def
def
def
abc
blabla

avaddv

bla
abc

もちろん、それは改善することができます。

于 2013-02-17T14:30:49.103 に答える
1

元のコードは非常に近いです。ひもuse strictを入れ$!てよくやった。dieまた、常にuse warningsの 3 パラメータ形式をopen使用し、レキシカル ファイル ハンドルを使用する必要があります。

このプログラムはあなたを助けるはずです。

use strict;
use warnings;

my %prv_line;
open (my $FILE, '<', 'somefile') || die $!;
while (<$FILE>) {
  if ( $prv_line{$_} ) {
    print "I saw this line $prv_line{$_} times\n";
  }
  $prv_line{$_}++;
}
于 2013-02-17T15:25:36.027 に答える