# I assume this is already loaded up my @AoA; # lookback array my @lookback; my $lc = 0; while (my $el = shift $AoA) { my $search = $el->[3]; # see if search term in lookback if (grep("/$search/", map { $_->[3]}, @lookback)) { # found a match } if ($lc < 15) { $lc++; } else { # take 1 element off shift @lookback; } push @lookback, $el; }