2011-11-21 19 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」的警告。

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