下面是我试图反转然后替换的脚本(A=>T,T=>A,G=>C,C=>G)。
版本 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
全局替换(版本 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”。我想要所有的替换并行。我怎样才能在字符串中实现这一点?