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