PERL:重复的线条

时间:2013-02-17 14:17:55

标签: perl

我正在编写一个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

我的问题:如何使用输出生成静态消息:print“我看过这行X次”而不打印脚本输出 感谢

2 个答案:

答案 0 :(得分: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

当然,它可以改进。

答案 1 :(得分:1)

您的原始代码非常接近。干得好use strict并将$!放在die字符串中。您还应始终use warnings,使用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{$_}++;
}