Использование $name =~ $regex
не изменит ваш $name
.Вы должны использовать оператор s///
для внесения любых изменений.
например,
$name =~ s/$pattern/$replacement/;
Если вы указываете и шаблон и замену в одном аргументеНапример, в форме s/foo/bar/
вам придется сначала разделить их:
my (undef, $pattern, $replacement) = split '/', $regex;
$name =~ s/$pattern/$replacement/;
Оригинальный ответ:
Использовать qr//
:
$name =~ qr/$regex/;
Вы также можете просто использовать $name =~ /$regex/
, но версия qr
является более общей, поскольку вы можете сохранить объект регулярного выражения для дальнейшего использования:
$compiled = qr/$regex/;
$name =~ $compiled;
$name =~ s/$compiled/foobar/;
и т. Д.