这种模式怎么匹配,请指教![求助]

这种模式怎么匹配,请指教![求助]

这种模式怎么匹配,请指教![求助]
#cat a.htm
[quote]

<tr align="center"><td height="60" colspan="3"><table width="189" border="0" cellspacing="0" cellpadding="0" background="/images/r_tembg2.gif">
<tr><td colspan="2"><img src="/images/r_tembg1.gif" width="189" height="6"></td></tr>
<tr>
<td height="23" width="72" align="center" background="/images/r_tembg4.gif" class="rb12">北京</td>
<td height="23" width="117" background="/images/r_tembg5.gif" align="center">晴转多云</td>

[/quote]

我想把 北京 和 晴转多云 这两个我感兴趣的内容取出来 ..

目前我所做的:

[quote]

#!/usr/bin/perl
use warnings;
use strict;
print "Content-type: text/html\n\n";
open(M_file,"a.htm") or die "can't open :$! ";
while(<M_file>){
print "城市: ",$1,"\n" if ($_=~ /^.*r_tembg4.*>(.*)<.*$/) # 单独这个成功匹配了北京
# print $1,"\n" if ($_=~ /^.*r_tembg5.*>(.*)<.*$/) ; # 单独匹配也OK
}

[/quote]

while里面的匹配单独运行都OK, 但同时一起perl就报错, 请问该怎么匹配!
我说两点:--1,复杂的 .
我说两点:
1,复杂的 HTML 解析需求,可以试试 HTML::* 模块。
2,如果用正则表达式,就不要太偷懒,不要出现太多的 .*,即使是要用,也要用 .*? 代替。
另外还有一个要说的是,if.
另外还有一个要说的是,if 后面的 $_=~ 是可以省略的,当然如果你非常勤劳的话,写上也无妨。