Я хочу заменить фиксированную строку в другой строке, используя Perl.Обе строки содержатся в переменных.
Если бы заменяемая строка не могла содержать метасимволы регулярных выражений, я мог бы сделать что-то вроде этого:
my $text = 'The quick brown fox jumps over the lazy dog!';
my $search = 'lazy';
my $replace = 'drowsy';
$text =~ s/$search/$replace/;
Увы, я хочу этоработать для произвольных фиксированных строк.Например, это должно оставить $text
без изменений:
my $text = 'The quick brown fox jumps over the lazy dog!';
my $search = 'dog.';
my $replace = 'donkey.';
$text =~ s/$search/$replace/;
Вместо этого это заменит dog!
на donkey.
, поскольку точка соответствует восклицательному знаку.
Предполагая, что переменная сама содержит содержимоене являются жестко закодированными, например, они могут поступать из файла или из командной строки, есть ли способ заключить в кавычки или иным образом разметить содержимое переменной, чтобы они не интерпретировались как регулярное выражение в таких операциях подстановки?
Или есть лучший способ обработки фиксированных строк?Предпочтительно что-нибудь, что позволило бы мне использовать регулярные выражения, такие как якоря или обратные ссылки?