sub append_n { my ($str, $array) = @_; my $vec = ''; for (@$array) { my $ofs = 0; while ( ( my $idx = index $str, $_, $ofs ) > -1 ) { # Set bits at each matched location vec( $vec, $_, 1 ) = 1 for $idx .. $idx + length() - 1; $ofs = $idx + 1; } } # Count set bits vec( $vec, $_, 1 ) or substr( $str, $_, 1 ) = 'N' for 0 .. -1 + length $str; return $str; } __END__ GATTACGNNNNGCGCTCGNNNAACGGCA GATTACGAGNNNNNNNCGTGTAANNNNN NNNTACGAGTGGCGCTCGTGNNNNNNNN NNNNNNNNNNGGNNNNNNNNNNNNGGNN