in reply to Re^3: Keeping Unique Elements in Array!
in thread Keeping Unique Elements in Array!

It does not scale like I thought, I was think that it could analize it by lets say the first and second elements and do the rest, here is a sample of what I am sying:
my $array_ref_x = [ [ 'ALICE WONDER', '9876543', '2009', '11.00', '711', '20', '0', '8', ], [ 'ALICE WONDER', '9876543', '2009', '11.00', '711', '3', '2', '0', ], [ 'ALICE WONDER', '9876543', '2009', '15.00', '711', '4', '5', '11', ], [ 'ALICE WONDER', '9876543', '2008', '15.00', '717', '4', '5', '9', ], [ 'John Day', '456789', '2011', '50.00', '717', '4', '22', '9', ], [ 'John Day', '456789', '2011', '50.00', '817', '4', '5', '90', ], [ 'Mary Ann', '123988', '2002', '10.00', '119', '5', '3', '0', ], ]; #Results my $array_ref_x = [ [ 'ALICE WONDER', 9876543, 2009, '15.00', 717, 20, 5, 11 ], [ 'John Day', '456789', '2011', '50.00', '817', '4', '22', '90', ], [ 'Mary Ann', '123988', '2002', '10.00', '119', '5', '3', '0', ], ];

Replies are listed 'Best First'.
Re^5: Keeping Unique Elements in Array!
by almut (Canon) on May 01, 2009 at 19:48 UTC

    Ah, I see why you were thinking of uniqueness... Maybe something like this, combining the idea of max() and uniqueness via hash:

    ... # group arrays by person+id my %persons; for my $aref (@$array_ref_x) { my $uniq_key = "$aref->[0] $aref->[1]"; push @{$persons{$uniq_key}}, $aref; } my $all_val = []; for my $aref_person (values %persons) { push @$all_val, my $tmp = []; for my $aref (@$aref_person) { @$tmp[0..1] = @$aref[0..1]; for my $i (2..$#$aref) { $tmp->[$i] = 0 unless defined $tmp->[$i]; $tmp->[$i] = $aref->[$i] if $aref->[$i] > $tmp->[$i]; } } } print Dumper $all_val; __END__ $VAR1 = [ [ 'John Day', '456789', 2011, '50.00', 817, 4, 22, 90 ], [ 'ALICE WONDER', '9876543', 2009, '15.00', 717, 20, 5, 11 ], [ 'Mary Ann', '123988', 2002, '10.00', 119, 5, 3, 0 ] ];
      Yes, that's what I am trying to do, thanks, this is actually coming from a query result of two database tables, and before combining these two values I have to make sure the second array_ref will have the same number of elements than the first one. I am losing my mind on this one since I can't do a simple join on these tables. But this will clear some of my problems for sure! Thanks for showing me a clear way of doing this!