#! perl -slw use strict; my @data; $data[ $_ ] = [ map int( rand 100 ), 1 .. 10 ] for 0 .. 1e3; my @lookback; my $matches = 0; for my $row ( @data ) { for my $lb ( @lookback ) { if( $row->[ 3 ] < 10 && $lb->[ 7 ] > 50 ) { print "condition matched ", ++$matches; last; } } push @lookback, $row; shift @lookback if @lookback > 15; }