Экранирование специальных символов в регулярном выражении Perl

Я пытаюсь сопоставить регулярное выражение в Perl. Мой код выглядит следующим образом:

my $source = "Hello_[version]; Goodbye_[version]";
my $pattern = "Hello_[version]";
if ($source =~ m/$pattern/) {
  print "Match found!"
}

Проблема возникает в том, что в скобках указывается класс символов (по крайней мере, я читал), когда Perl пытается сопоставить регулярное выражение, и сопоставление заканчивается неудачей. Я знаю, что могу избежать скобок с помощью \ [ или \] , но для этого потребуется другой блок кода, чтобы пройти по строке и найти скобки. Есть ли способ автоматически игнорировать скобки, не экранируя их по отдельности?

Краткое примечание: я не могу просто добавить обратную косую черту, так как это всего лишь пример. В моем реальном коде $ source и $ pattern оба исходят из-за пределов кода Perl (либо URIEncoded, либо из файла).

6
задан Egga Hartung 14 September 2011 в 23:17
поделиться