2011-11-21 17 views
2

当我尝试在Perl脚本中实现预编译正则表达式时,我遇到了一些匹配问题。我的脚本没有预编译就可以工作,并且任何时候我都有一个跨行的表达式,在预编译时它不会返回匹配结果。因此,例如:在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

您使用的Perl版本是? – cjm

回答

9

您有一个错字。

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

这应该是:

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

前者是针对$regex_web进行模式匹配。后者将模式分配给$ regex_web。如果出现警告,您会收到“在模式匹配中使用未初始化值$ regex_web”的警告。

除非它是你的文章中的错字?