Есть исходная строка $source. Есть 2 целых числа — $begin и $end.
Есть подстрока $inline.
Надо заменить фрагмент $source начиная с $begin и заканчивая $end на $inline.
Решил сам с помощью трех substr — склейкой трех фрагментов — до $begin, $inline и после $end, но чуствую, что есть более красивый способ.
Здравствуйте, DemAS, Вы писали:
DAS> Решил сам с помощью трех substr — склейкой трех фрагментов — до $begin, $inline и после $end, но чуствую, что есть более красивый способ.
#!/usr/local/bin/perlmy $source = "before inline 123 test test 321 after inline";
my $inline = "| inline |";
my ($begin, $end) = (123, 321);
print"$source\n";
$source =~ s/($begin.+$end)/$inline/;
print"$source\n";
Не знаю насколько это изящнее, но быстрее навряд ли.. хотя для небольших строк может и ничего..
Здравствуйте, DemAS, Вы писали:
DAS> Есть исходная строка $source. Есть 2 целых числа — $begin и $end. DAS> Есть подстрока $inline. DAS> Надо заменить фрагмент $source начиная с $begin и заканчивая $end на $inline.
my $source = "1234567890";
my $inline = "inline";
my ($begin, $end) = (5, 8);
substr($source, $begin, $end - $begin) = $inline;