「E」が出現するたびに文字列が断片化され、ユーザーがコマンドラインから「C」の位置を入力するPerlスクリプトを作成しようとしています(たとえば、3-8または3-8,13-18またはコンマで区切られたものなど)文字列が長い場合、そのような形式の文字列に応じて「C」の位置)、「C」を含むフラグメント (たとえば、3 と 8 の位置) を結合して、出力に表示する必要があります。文字列が「ABCDEABCDEABCDEABCDEABCDE」で、ユーザーが 3 ~ 8 を入力すると、プログラムの出力は次のようになります。
ABCDEABCDE
ABCDE
ABCDE
ABCDE
ユーザーがコマンドラインから「C」の位置を入力すると、文字列が「E」のすべての位置で切り取られるスクリプトを作成しましたが、その後は正しく記述できません。助けてください!
これまでに書いたコード(編集済み)は次のとおりです。
use strict;
use warnings;
my $s = 'ABCDEABCDEABCDEABCDEABCDE';
my $i=0;
my @where;
my @array;
my @bond;
my @pos;
my @s_array;
my @s_array2;
for ($i=0; $i<=4; $i++) {
$where[$i] = index($s,"C",$where[$i-1])+1;
push(@array,$where[$i]);
}
print "All Positions of C: @array\n\n";
print "Enter C positions:\n";
my @join_C = <STDIN>;
foreach (@join_C) {
@bond = split (',',$_);
}
foreach (@bond) {
@pos = split ('-', $_);
}
print "entered C positions:@pos\n";
print "Resulting disulfide linked peptides\n\n";
my @a = split(/E/, $s);
my $result = join ("E,", @a);
my @final = split(/,/, $result);
foreach my $final (@final) {
foreach my $pos(@pos) {
my @source = split //, $final[@final];
my $length = @source;
for ($i=0; $i<=$length; $i++) {
if (index($final[$i], "C") == $pos[$i]) {
push (@s_array, $final[$i]);
}
else {
push (@s_array2, $final[$i]);
}
}
}
}
my $lastly_joined = join (',', @s_array);
print "Joined Fragments= @s_array\n";
print "Remaining fragments= @s_array2\n";