2010-10-01 106 views
1

我有一個Perl腳本,用Ts替換字符串末尾的Us或Ns。這個程序是什麼,我想:如何在Perl中的字符串末尾替換字符?

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); 

它產生這樣的輸出:

> ./test 
before: UUUUUCCNNCCCCNNNCUUUNNNNN 
after: UUUUUCCNNCCCCNNNCTTTTTTTT 

是否與一個正則表達式,翻譯,或其他命令這樣做的方法嗎?

回答

8
 

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

/e修正符指示的Perl治療替換子句'T' x length($1)作爲表達進行評估,並且使用評估作爲替換字符串的結果。

+0

真棒,工程。謝謝! – 2010-10-01 17:50:43

4

對於TIMTOWTDI的緣故:

$v =~ s/[UN](?=[UN]*$)/T/g; 
相關問題