2010-10-01 4 views
1

У меня есть скрипт Perl, который заменяет любые Us или Ns в конце строки с Ts. Эта программа является то, что я пытаюсь:Как заменить символы только в конце строки в 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

Awesome, что работает. Благодаря! –

Смежные вопросы