#!/usr/bin/perl use strict; use warnings; use Data::Dumper qw/Dumper/; my @pairs_in_db = ([1,2],[1,9],[3,4],[5,6]); my @pairs_from_somewhere_else = ([1,2],[5,6],[7,18]); my @pairs_to_delete=@pairs_in_db; my @pairs_to_create; NEW: for my $new (@pairs_from_somewhere_else) { for my $old (@pairs_to_delete) { if (defined($old) and "@$new" eq "@$old" ) { $old=undef; next NEW; } } push @pairs_to_create,$new; } print Dumper \@pairs_to_create,\@pairs_to_delete;