我试图在每次出现“E”时打破一个字符串。但在输出中,我想跳过在前一个破损循环中较早到达的那些子字符串。例如。如果我在字符串$s='ABCDEABCDEABCDEABCD'
中的第 5、第 10 和第 15 位出现“E”的字符串,则由于位置 10 断裂而出现的子串不应出现在位置 15 断裂导致的子串中。下面给出的脚本在“E”的每个位置都中断。但我无法停止子字符串的重复。请帮忙!
my $s = 'ABCDEAXBCDEAYBCDEAZBCD';
my @where; my @array;my @final;
my $result; my $j;
for ($j = 0; $j <= 2; $j++) {
$where[j] = index($s,"E",$where[j-1]) + 1;
push @array, $where[j];
}
for my $array (@array) {
substr($s, $array-1, 1) = "\0";
my @a = split(/E(?!P)/, $s);
substr($s, $array-1, 1) = 'E';
$_ =~ s/\0/E/g foreach (@a);
$result = join ("E,", @a).'E';
@final = split(/,/, $result);
print "@final\n";
}
我得到的输出是:
ABCDEAXBCDE AYBCDE AZBCDE
ABCDE AXBCDEAYBCDE AZBCDE
ABCDE AXBCDE AYBCDEAZBCDE
预期输出:
ABCDEAXBCDE AYBCDE AZBCDE
ABCDE AXBCDEAYBCDE
AXBCDE AYBCDEAZBCDE