$pattern
не содержит шаблон регулярных выражений;он содержит немного исходного кода Perl.Чтобы оценить код Perl, вам нужно eval EXPR
(или do
или require
).
Однако запрашивать код Perl у пользователя - плохая идея.Вместо этого я рекомендую запрашивать шаблон и замену отдельно, как показано ниже:
my $pattern = 'a';
my $replacement = 'b';
my $string = 'abcd';
$string =~ s/$pattern/$replacement/g;
Используйте функцию из String :: Substitution , если вы хотите разрешить $1
итакое должно быть разрешено в выражении замены.
use String::Substitution qw( gsub_modify );
my $pattern = '(a)(b)';
my $replacement = '$2$1';
my $string = 'abcd';
gsub_modify($string, $pattern, $replacement);