Обновите скрипт perl, чтобы он включал количество повторов строки - PullRequest
0 голосов
/ 28 июня 2011

Ниже приведен скрипт perl, который выдает список записей, которые присутствуют более одного раза в файле / STDINЯ хочу обновить этот скрипт, чтобы он также показывал, сколько раз записи повторялись.

#!/usr/bin/perl

use strict;
use warnings;

my %duplicates;

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

foreach my $key (keys %duplicates) { 
  if ($duplicates{$key} > 1) {
    delete $duplicates{$key}; 
    print "$key\n";
  }
}

Ответы [ 3 ]

4 голосов
/ 28 июня 2011

Встроенная функция delete возвращает удаленное значение. Таким образом, вы можете использовать:

print "$key: ", delete $duplicates{$key}, "\n";
0 голосов
/ 28 июня 2011

Просто print $duplicates{$key}. Или я что-то упустил?

Кроме того, вы уверены, что вам нужно delete $duplicates{$key}?

0 голосов
/ 28 июня 2011

Вы можете печатать $duplicates{$key}, перебирая ключи:

#!/usr/bin/perl

use strict;
use warnings;

my %duplicates;

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

foreach my $key (keys %duplicates) { 
  if ($duplicates{$key} > 1) {
       print "$key is repeated $duplicates{$key} times\n";
       delete $duplicates{$key}; 
  }
}
...