# find prev. pattern intersection my $intersection_length = 0; while (my $pmh = shift @prev_msg_hashes) { if ($pmh eq $messages[$intersection_length]->{hash}) { $intersection_length ++ } else { $intersection_length = 0 } } my @new_msgs = @messages[$intersection_length .. $#messages];