A serialization approach:-
use 5.026; use warnings; use Data::Dumper; my @test_data = ( { Tag1 => q{1}, Tag2 => q{a} }, { Tag1 => q{1}, Tag2 => q{a} }, { Tag1 => q{1}, Tag2 => q{b} }, { Tag1 => q{1}, Tag2 => q{c} }, { Tag1 => q{1}, Tag2 => q{a} }, { Tag1 => q{2}, Tag2 => q{a} }, { Tag1 => q{2}, Tag2 => q{d} }, { Tag1 => q{2}, Tag2 => q{a} }, { Tag1 => q{3} }, { Tag1 => q{sun}, Tag2 => q{a} }, { Tag1 => q{sun}, Tag2 => q{a} }, ); my @unique = do { my %seen; map { $_->[ 1 ] } grep { ! $seen{ $_->[ 0 ] } ++ } map { my $rhItem = $_; [ ( join qq{\x00}, map { join qq{\x00}, $_, $rhItem->{ $_ } } sort keys %{ $rhItem } ), $rhItem ] } @test_data; }; print Data::Dumper ->new( [ \ @unique ], [ qw{ *unique } ] ) ->Sortkeys( 1 ) ->Dumpxs();
The output:-
@unique = ( { 'Tag1' => '1', 'Tag2' => 'a' }, { 'Tag1' => '1', 'Tag2' => 'b' }, { 'Tag1' => '1', 'Tag2' => 'c' }, { 'Tag1' => '2', 'Tag2' => 'a' }, { 'Tag1' => '2', 'Tag2' => 'd' }, { 'Tag1' => '3' }, { 'Tag1' => 'sun', 'Tag2' => 'a' } );
I hope this is of interest.
Cheers,
JohnGG
In reply to Re: Eliminate exact duplicates from array of hashes
by johngg
in thread Eliminate exact duplicates from array of hashes
by Anonymous Monk
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |