在Perl中获取Common Hash Ref

时间:2014-07-03 12:07:02

标签: perl hash grep

我有这样的哈希。

my $records = {
'Name' => [
{ A => 101},
{ B => 102},
{ B => 102},
{ C => 104},
{ C => 104},
],
};

现在我想得到重复的哈希引用,如B => 102重复我希望得到休息我想离开。

我想获得重复的所有哈希引用。 在最后的回复中。

我想要的回答是这样的:

$records = {
'Name' => [
{ B => 102},
{ C => 104},
],
};

1 个答案:

答案 0 :(得分:1)

假设具有重复键的哈希只有一个键/值对,

my $records = {
  'Name' => [
    { A => 101},
    { B => 102},
    { B => 102},
    { C => 104},
    { C => 104},
  ],
};

my %seen;
@{ $records->{Name} } = grep {
  my ($k) = keys %$_;
  # approve only keys which are seen second time,
  # as this qualifies them as duplicates
  ++$seen{$k} ==2 
}
@{ $records->{Name} };