Note that this does not guarantee any sort of order, though that should be trivial to implement.use strict; use warnings; use Data::Dumper; my @AOA1 = ( [2003,1],[2003,3],[2003,4],[2004,1] ); my @AOA2 = ( [2003,1],[2003,2],[2003,3],[2003,4],[2003,5],[2003,6], [2003,7],[2003,8],[2003,9],[2003,10],[2003,11],[2003,12], [2004,1],[2004,2] ); my @diff = diff_AoA(\@AOA1, \@AOA2); print Dumper \@diff; sub diff_AoA { my @AofArray_refs = @_; my %seen; foreach my $array_ref( @AofArray_refs ) { foreach my $array ( @$array_ref ){ my $key = join (",", map { qq("$_") } @$array ); $seen{$key}{COUNT}++; $seen{$key}{ARRAY_REF} = [ @$array ]; } } my @diff_array; foreach my $key ( keys %seen ) { push @diff_array, $seen{$key}{ARRAY_REF} if $seen{$key}{COUNT} < 2; } return @diff_array; };
-enlil
In reply to Re: How do I compare 2 Arrays of Arrays and get a 3rd one?
by Enlil
in thread How do I compare 2 Arrays of Arrays and get a 3rd one? - updated -
by Miguel
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |