Ниже приведен сценарий, в котором я пытаюсь изменить, а затем подставить (A => T, T => A, G => C, C => G).Синхронная подстановка в Perl
версия 1
#!/usr/bin/perl
my $str="AAAAAGCTTGC";
$str_rev=scalar reverse ("$str"),"\n";
print"My original string: $str\n";
print "My reversed string: $str_rev\n";
$str_rev =~ s/A/T/g;
$str_rev =~ s/T/A/;
$str_rev =~ s/G/C/g;
$str_rev =~ s/C/G/;
print"My substituted reversed string: $str_rev\n";
ВЫВОД:
My original string: AAAAAGCTTGC
My reversed string: CGTTCGAAAAA
My substituted reversed string: GCATCCTTTTT
Global для всех замен (версия 2)
$str_rev =~ s/A/T/g;
$str_rev =~ s/T/A/g;
$str_rev =~ s/G/C/g;
$str_rev =~ s/C/G/g;
print"My substituted reversed string: $str_rev\n";
ВЫВОД:
My original string: AAAAAGCTTGC
My reversed string: CGTTCGAAAAA
My substituted reversed string: GGAAGGAAAAA
В первой версии я заметил, что подстановка, которая не является глобальной, подменяются один раз (очевидно, поскольку ее не глобальная). А в версии 2, поскольку он обрабатывает код сверху вниз, последняя подстановка пропускает оставшуюся «G». Я хотел все подстановки параллельно. Как я могу добиться этого в строке?
Спасибо! Он работал - без «g»;) – user1504209