Проблемы при использовании скомпилированного регулярного выражения в Perl - PullRequest
2 голосов
/ 21 ноября 2011

У меня возникают некоторые проблемы с сопоставлением, когда я пытаюсь реализовать скомпилированное регулярное выражение в сценарии Perl. У меня есть скрипт, работающий без предварительной компиляции, и всякий раз, когда у меня есть экспресс, который охватывает строки, он не возвращает соответствия при предварительной компиляции. Так, например:

my $regex_partner = qr/<h1 id="PartnerName">(?<partner_name>.*?)<\/h1>/;
$content =~ $regex_partner;
$partner_name = $+{partner_name};

Хорошо работает при предварительной компиляции, но:

my $regex_web =~ qr/Company Website:.*openWindow[(]'(?<website>http:\/\/.*?)'/s;
$content =~ $regex_web;
$website = $+{website};

ничего не возвращает, но работает, если я вывожу всю прекомпиляцию. Кажется, что когда бы ни использовался qr // s, он не будет работать.

помощь

1 Ответ

9 голосов
/ 21 ноября 2011

У вас есть опечатка.

my $regex_web =~ qr/.../s;

Это должно быть:

my $regex_web = qr/.../s;

Первый выполняет сопоставление с шаблоном против $regex_web. Последний присваивает шаблон $ regex_web. Если бы были предупреждения, вы бы получили предупреждение «Использование неинициализированного значения $ regex_web в сопоставлении с образцом».

Разве это не опечатка в вашем посте?

...