Замена символа в строке на основе позиции - PullRequest
0 голосов
/ 07 октября 2018

Я пытаюсь использовать Perl для замены символа в строке на основе его позиции.

Вот что я сделал:

my ($pos, $rep) = @ARGV;

print ("Give me the string: ");
chomp(my $string = <STDIN>);

print ("The modified string is ", substr($seq, $pos, 1, $rep),"\n");

Когда я запускаю в терминале:

perl myprogram.pl 4 B
Give me the string: eeeeee
The modified string is e

В качестве вывода я хочу получить: eeeeBe

Любая подсказка, что не так?

1 Ответ

0 голосов
/ 07 октября 2018

Цитирование perldoc -f substr:

Альтернативой использованию substr в качестве lvalue является указание замещающей строки в качестве 4-го аргумента.Это позволяет вам заменять части EXPR и возвращать то, что было до за одну операцию, так же, как вы можете с splice.

(Акцент мой.)

Другими словами, substr всегда возвращает подстроку исходной строки.Если вы хотите напечатать измененную строку, сделайте это в два шага:

substr $seq, $pos, 1, $rep;
# or alternatively:
#  substr($seq, $pos, 1) = $rep;
print "The modified string is $seq\n";
...