Хорошо, поэтому мы начнем с создания функции, которая просто возвращает наш ввод, повторенный 5 раз
sub func($a) { $a x 5 };
Сделайте нашу строку
my $s = "Here is a needle";
И вот замена
$s ~~ s/"needle"/{func($/)}/;
Несколько вещей, на которые стоит обратить внимание.Поскольку мы просто хотим сопоставить строку, мы ее цитируем.И наш вывод - это строка в двойных кавычках, поэтому для запуска функции мы используем {}
.Модификатор e
не требуется, поскольку все строки допускают экранирование такого типа.
В документах по подстановке упоминается, что объект Match помещен в $/
, поэтому мы передаем егонаша функция.В этом случае объект Match при приведении к строке просто возвращает сопоставленную строку.И мы получаем в качестве нашего окончательного результата.
Here is a needleneedleneedleneedleneedle