#!/perl -w use strict; my $string = "abcdefghijklmnopqrstuvwxyz"; my @sub_strings = ('cdef', 'efghij', 'klmno', 'mnopqrst'); my $string_index = 0; my $last_end_point = index($string, $sub_strings[0]) + length($sub_strings[0]); foreach my $sub_array_index (1..$#sub_strings) { my $string_index = index($string, $sub_strings[$sub_array_index], $string_index); my $overlap = $last_end_point - $string_index; # if there's an overlap replace from the front of current string, and the # end of the previous string if ($overlap > 0) { substr($sub_strings[$sub_array_index], 0, $overlap) = '-'x$overlap; substr($sub_strings[$sub_array_index-1], -$overlap, $overlap) = '-'x$overlap; } $last_end_point = $string_index + length($sub_strings[$sub_array_index]); }