'Fruits'=> 'Apple', 'Orange', 'Banana', 'Grapes', , 'Fruits1'=> 'Apples', 'Orange', 'pineapple', 'Grapes', #### #!/usr/bin/perl use strict; use warnings; my %HoA1 = ( Fruits => [ "Apple", "Orange", "Banana", "Grapes" ], ); my %HoA2 = ( Fruits1 => [ "Apples", "Orange", "pineapple", "Grapes" ], ); #### #!/usr/bin/perl use strict; use warnings; use Test::More tests => 1; my %HoA1 = ( Fruits => [ "Apple", "Orange", "Banana", "Grapes" ], ); my %HoA2 = ( Fruits1 => [ "Apples", "Orange", "pineapple", "Grapes" ], ); is_deeply(\%HoA1, \%HoA2, 'data structures should be the same'); __END__ $ perl test.pl 1..1 not ok 1 - data structures should be the same # Failed test 'data structures should be the same' # at test.pl line 14. # Structures begin differing at: # $got->{Fruits1} = Does not exist # $expected->{Fruits1} = ARRAY(0xdc0bc8) # Looks like you failed 1 test of 1. #### #!/usr/bin/perl use strict; use warnings; use Test::More tests => 1; my %HoA1 = ( Fruits => [ "Apple", "Orange", "Banana", "Grapes" ], ); my %HoA2 = ( Fruits => [ "Apples", "Orange", "pineapple", "Grapes" ], ); is_deeply(\%HoA1, \%HoA2, 'data structures should be the same'); __END__ $ perl test.pl 1..1 not ok 1 - data structures should be the same # Failed test 'data structures should be the same' # at test.pl line 14. # Structures begin differing at: # $got->{Fruits}[0] = 'Apple' # $expected->{Fruits}[0] = 'Apples' # Looks like you failed 1 test of 1. #### #!/usr/bin/perl use strict; use warnings; use Data::Dumper; use Array::Utils qw(:all); my %HoA = ( Fruits => [ "Apple", "Orange", "Banana", "Grapes" ], Fruits1 => [ "Apples", "Orange", "pineapple", "Grapes" ], ); # print Dumper \%HoA; =sample of Hash of Arrays output $VAR1 = { 'Fruits1' => [ 'Apples', 'Orange', 'pineapple', 'Grapes' ], 'Fruits' => [ 'Apple', 'Orange', 'Banana', 'Grapes' ] }; =cut my @AoAValues = sort values %HoA; # print Dumper \@AoAValues; =sample of Array of Arrays from values $VAR1 = [ [ 'Apple', 'Orange', 'Banana', 'Grapes' ], [ 'Apples', 'Orange', 'pineapple', 'Grapes' ] ]; =cut # get items from array @{$AoAValues[1]} that are not in array @{$AoAValues[0]} # my @diff = array_minus( @{$AoAValues[1]}, @{$AoAValues[0]} ); my %hash; $hash{'difference'} = [ array_minus( @{$AoAValues[1]}, @{$AoAValues[0]} ) ]; print Dumper \%hash; __END__ $VAR1 = { 'difference' => [ 'Apples', 'pineapple' ] }; #### #!/usr/bin/perl use strict; use warnings; use Data::Dumper; use Array::Utils qw(:all); my %HoA1 = ( Fruits => [ "Apple", "Orange", "Banana", "Grapes" ], Fruits1 => [ "WaterMellon" ], ); my %HoA2 = ( Fruits => [ "Apples", "Orange", "pineapple", "Grapes" ], Fruits1 => [ "Mellon" ], ); my @AoAValues1 = sort values %HoA1; my @AoAValues2 = sort values %HoA2; my %hash; for (0 .. $#AoAValues1) { $hash{$_} = [ array_minus( @{$AoAValues2[$_]}, @{$AoAValues1[$_]} ) ]; } print Dumper \%hash; __END__ $ perl test.pl $VAR1 = { '0' => [ 'Apples', 'pineapple' ], '1' => [ 'Mellon'