我正在编写一个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次”而不打印脚本输出 感谢
答案 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{$_}++;
}