use Algorithm::Diff qw(LCSidx); my @bigarray = qw(this is the main array from which to delete elements); my @smallarray = qw(delete elements); my ($index_range) = LCSidx \@bigarray, \@smallarray; splice @bigarray, $index_range->[0], @$index_range;