Как использовать переменную Perl в регулярном выражении? - PullRequest
2 голосов
/ 03 октября 2010

Я пытаюсь сделать поиск и заменить переменными.В этом случае переменные, которые я извлек из предыдущего совпадения.Вот мой код:

$fileContentToAlter =~ s/$2/$1/g;

Теперь я понимаю, что в этом состоянии он читается неправильно, поскольку $ имеет свое собственное значение внутри регулярного выражения.Я провел поиск в Интернете и прочитал, что двойные кавычки могут решить проблему, поскольку она будет интерполироваться, но это не работает для меня.Я не собираюсь лгать, это домашнее задание, поэтому я не ожидаю однозначного ответа.Просто подтолкни в правильном направлении.

1 Ответ

5 голосов
/ 03 октября 2010

Избегайте '$ 1' и '$ 2', потому что они являются метасимволами регулярных выражений.

use strict;
use warnings;

my $val1 = "abc";
my $val2 = "def";
while (<>)
{
    s/$val1/$val2/g;
    print;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...