如何在Perl中的字符串末尾替换字符?

Dan*_*age 1 regex perl replace

我有一个Perl脚本,用Ts替换字符串末尾的任何Us或Ns.我正在尝试这个程序:

use strict;
my $v = "UUUUUCCNNCCCCNNNCUUUNNNNN";
printf("before: %s \n", $v);
if($v =~ m/([UN]+)$/)
{
  my $length = length($1);
  substr($v, (length($v) - $length), $length) = "T" x $length;
}
printf(" after: %s \n", $v);
Run Code Online (Sandbox Code Playgroud)

它产生这个输出:

> ./test
before: UUUUUCCNNCCCCNNNCUUUNNNNN 
 after: UUUUUCCNNCCCCNNNCTTTTTTTT
Run Code Online (Sandbox Code Playgroud)

有没有办法用一个正则表达式,翻译或其他命令来做到这一点?

mob*_*mob 8


    $v =~ s/([UN]+)$/'T' x length($1)/e;

/e修正符指示的Perl治疗替换子句'T' x length($1)作为待计算的表达式,以及使用评估作为替换字符串的结果.