我正在尝试编写一个 Perl 脚本,其中字符串在每次出现“E”时以及当用户通过命令行输入“C”的位置时(比如 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";