给定 perl 脚本在“E”处剪切输入序列并跳过@nobreak 中提到的“E”的那些特定位置,并生成一个片段数组作为输出。但是我想要一个脚本,它为每个已跳过的位置在输出中生成一组这样的数组,并考虑到@nobreak 的所有位置。假设第 1 组包含在“E”37 处跳过后产生的片段,第 2 组在“E”45 处跳过后产生,依此类推。下面提到的我编写的脚本无法正常工作。我想在输出中生成 4 个不同的数组,一次占用一个 @nobreak 的位置。请帮忙!
my $s = 'MALWMRLLPLLALLALWGPDPAAAFVNQHLCGSHLVEALYLVCGERGFFYTPKTRREAEDLQVGQVELGGGPGAGSLQPLALEGSLQKRGIVEQCCTSICSLYQLENYCN';
print "Results of 1-Missed Cleavage:\n\n";
my @nobreak = (37, 45, 57, 59);
{
@nobreak = map { $_ - 1 } @nobreak;
foreach (@nobreak) {
substr($s, $_, 1) = "\0";
}
my @a = split /E(?!P)/, $s;
$_ =~ s/\0/E/g foreach (@a);
$result = join "E,", @a;
@final = split /,/, $result;
print "@final\n";
}