与えられたperlスクリプトは、入力シーケンスを「E」でカットし、@ nobreakで言及されている「E」の特定の位置をスキップし、出力としてフラグメントの配列を生成します。しかし、@ nobreakのすべての位置を考慮に入れて、スキップされたすべての位置の出力にそのような配列のセットを生成するスクリプトが必要です。たとえば、セット1には「E」37でスキップした後に生成されたフラグメントが含まれ、セット2には「E」45でスキップした後に生成されたフラグメントが含まれます。私が書いた以下のスクリプトは正しく機能していません。一度に@nobreakの1つの位置を取得して、出力に4つの異なる配列を生成したいと思います。助けてください!
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";
}