use Data::Dump qw[ pp ]; my @v = ([100, 200],[200, 300],[200, 100]);; my %uniq; my @r = grep{ ++$uniq{ join $;, $_->[0], $_->[1] } == 1 and ++$uniq{ join $;, $_->[1], $_->[0] } == 1 } @v;; pp @r;; ([100, 200], [200, 300])