UPDATE: whoops a closer inspection reveals this doesnt match your output requirements, but i leave it here as it is a useful technique.
This is a situation where For some problems like this m//g in scalar context comes in useful:
sub append_n { my ( $str, $array ) = @_; my $nstring = "N" x length($str); pos($str)=0; # reset the search position on $str foreach my $sbstr ( @$array ) { $str=~/$sbstr/g and substr ($nstring, $-[0], length($sbstr)) = $sbstr } return $nstring; }
Outputs (when combined with a modified version of your code)
m//g: GATTACGNNNNGCGCTCGNNNAACGGCA Orig: GATTACGNNNNGCGCTCGNNNAACGGCA m//g: GATTACGNNNNNNNNNCGTGTAANNNNN Orig: GATTACGAGNNNNNNNCGTGTAANNNNN m//g: NNNTACGAGTNNNGCTCGTGNNNNNNNN Orig: NNNTACGAGTGGCGCTCGTGNNNNNNNN m//g: NNNNNNNNNNGGNNNNNNNNNNNNGGNN Orig: NNNNNNNNNNGGNNNNNNNNNNNNNNNN
In reply to Re: Recovering Substrings to String with Gap (use m//g in scalar context)
by demerphq
in thread Recovering Substrings to String with Gap
by monkfan
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |