#! perl -slw use strict; use Data::Dumper; use Algorithm::Diff qw[ diff ]; my $given = { 'Subtype' => [ { 'url' => 'http://www.google.nl/', 'title' => 'testNL' }, { 'url' => 'http://www.google.be/', 'title' => 'testBE' } ], 'name' => 'test1' }; my $retrieved = { 'Subtype' => [ { 'url' => 'http://www.google.nl/', 'title' => 'testNL' }, { 'url' => 'http://www.google.be/', 'title' => 'testBE' }, { 'url' => 'http://www.google.de/', 'title' => 'testBE' } ], 'name' => 'test2', 'type' => 'test2' }; =pod The result should be: $result = { 'Subtype' => [ { 'url' => 'http://www.google.de/', 'title' => 'testBE' } ], 'name' => 'test2', 'type' => 'test2' }; =cut print @$_ for map{ @$_ } diff( [ split "\n", Dumper( $retrieved ) ], [ split "\n", Dumper( $given ) ] ); __END__ 8:37:10.53 P:\test>344057.pl -9 }, -10 { -11 'url' => 'http://www.google.de/', -12 'title' => 'testBE' -15 'name' => 'test2', -16 'type' => 'test2' +11 'name' => 'test1'