以下に示すスクリプトは、「E」が出現するたびに入力文字列を切り取り、配列に格納します。最終出力には、「E」のすべての位置のすべての断片化された文字列が表示されます。ただし、問題は、このスクリプトでは、出力の配列の最後の要素に「E」が表示されず、「D」までしか表示されないことです。私が得ている出力は-
ABCDEABCDE ABCDE ABCDE ABCD
ABCDE ABCDEABCDE ABCDE ABCD
ABCDE ABCDE ABCDEABCDE ABCD
ABCDE ABCDE ABCDE ABCDEABCD
ABCDE ABCDE ABCDE ABCDE ABCD
しかし、私が望む最終的な出力は-
ABCDEABCDE ABCDE ABCDE ABCDE
ABCDE ABCDEABCDE ABCDE ABCDE
ABCDE ABCDE ABCDEABCDE ABCDE
ABCDE ABCDE ABCDE ABCDEABCDE
ABCDE ABCDE ABCDE ABCDE ABCDE
私のスクリプトは-
my $s = 'ABCDEABCDEABCDEABCDEABCDE';
if (substr($s,-1) eq "E") {
@array1 = @array[0 .. $#array-1];
print "Results of 1-missed cleavage having 1E at the end\n\n";
for my $array1 (@array1) {
substr($s, $array1-1, 1) = "\0";
my @a = split(/E(?!P)/, $s);
substr($s, $array1-1, 1) = 'E';
$_ =~ s/\0/E/g foreach (@a);
$result = join ("E,", @a);
@final = split(/,/, $result);
print "@final\n";
}
my @output=split(/E(?!P)/, $s);
$out = join ("E,", @output);
@output1 = split(/,/, $out);
print "@output1\n\n";
}
else {
print "E is not at terminal position"
};