#!/usr/bin/perl use strict; use warnings; my @pairs_in_db = ([1,2],[1,9],[3,4],[5,6]); my @pairs_from_somewhere_else = ([1,2],[5,6],[7,18]); #prepare map my %map; # set original and a counter $map{join(',',@$_)}=[$_,0] for(@pairs_in_db); for(@pairs_from_somewhere_else) { my $str=join(',',@$_); if(exists($map{$str})) { $map{$str}->[1]++; printf("<%02u, %02u> was in db\n", @{$map{$str}->[0]}); } else { printf("<%02u, %02u> has to be inserted into the databse\n", @$_); } } for(values(%map)) { unless($_->[1]) { printf("<%02u, %02u> will be removed\n", @{$_->[0]}); } }