$type Damnitaddie.pl use strict; use warnings; use Data::Dumper; my @rows = ( [qw(a b c d)], [qw(e f c h)], [qw(i j k l)], ); my %seen; @rows = grep { my $x = $_->[2]; if ( exists $seen{$x} ) { $seen{$x}++; 0; } else { $seen{$x} = 0; $seen{$x}++; 1; } } @rows; #@rows = do { my %seen; grep { !$seen{$_->[2]}++ } @rows }; print Dumper( \@rows ); $perl Damnitaddie.pl $VAR1 = [ [ 'a', 'b', 'c', 'd' ], [ 'i', 'j', 'k', 'l' ] ];