Very good question.
I didn't know about those cases. I only can consider those cases, which are mentioned as examples.
Update: Here's an update, so it should consider that special case you mentioned. But I had to change the code and remove (r)index.
#!/usr/bin/perl
use strict;
use warnings;
open SEQ, '<', 'data1.dat' or die $!;
open MASK, '<', 'data2.dat' or die $!;
while ( my $seq = <SEQ> ) {
my $mask = <MASK>;
while ( $mask =~ m/(N+)/g ) {
my $length = length $1;
my $start = pos($mask) - $length;
my $lc_seq = lc substr( $seq, $start, $length );
substr( $seq, $start, $length, $lc_seq );
}
print $seq;
}
close MASK;
close SEQ;
|