use warnings;
use strict;
use Data::Compare;
use Data::Dumper;
my $arefs = [
[
{
BIRTH => "11/04/2014",
CODE => 4,
NAME => "JOHN D.",
NUMBER => 1234,
},
],
[
{
BIRTH => "11/04/2014",
CODE => 4,
NAME => "JOHN D.",
NUMBER => 1234,
},
],
[
{
BIRTH => "11/04/2014",
CODE => 4,
NAME => "Mike D",
NUMBER => 5555,
},
],
];
my $no_dups_aref;
while (my $aref = shift @$arefs){
my $dup = 0;
for (@$arefs){
$dup = Compare($aref, $_);
last if $dup;
}
next if $dup;
push @$no_dups_aref, $aref;
}
print Dumper @$no_dups_aref;
However, I'd be seriously inclined to change your data structure. There's no need to have nested arrays if all you have in each one only has a single hash. I'd dumb it down to a simple AoH:
use warnings;
use strict;
use Data::Compare;
use Data::Dumper;
my $hrefs = [
{
BIRTH => "11/04/2014",
CODE => 4,
NAME => "JOHN D.",
NUMBER => 1234,
},
{
BIRTH => "11/04/2014",
CODE => 4,
NAME => "JOHN D.",
NUMBER => 1234,
},
{
BIRTH => "11/04/2014",
CODE => 4,
NAME => "Mike D",
NUMBER => 5555,
},
];
my $no_dups_aref;
while (my $href = shift @$hrefs){
my $dup = 0;
for (@$hrefs){
$dup = Compare($href, $_);
last if $dup;
}
next if $dup;
push @$no_dups_aref, $href;
}
print Dumper @$no_dups_aref;
|