##
use strict;
use warnings;
my $seq = "AGACGAGTA";
my $mask=''; vec ($mask,$_,1)=1 for (2..6);
print "Str: $seq\n";
print "Mask: ", unpack ("b*",$mask),"\n";
####
Str: AGACGAGTA
Mask: 00111110
####
#Solution 1:
my @mask = split "",unpack ("b*",$mask);
my @seq = split "",$seq;
print "Res: ";
print map {! shift @mask ? $_ : "x"} @seq;
print "\n";
####
# Solution 2:
my $s_mask = unpack ("b*",$mask);
my $pos=0;
print "Res: ";
while ($pos < length($seq)){
no warnings; ## $s_mask could be shorter than $seq
print ! substr($s_mask,$pos,1) ? substr($seq,$pos,1) : "x";
$pos++;
}
print "\n";
####
Res: AGxxxxxTA