请教一个正则表达式的问题

请教一个正则表达式的问题

请教一个正则表达式的问题
我想匹配网页中的src中的相对路径,并用http://www.163.com/的绝对路径替换,后面的相对路径还保留,这样就能定位到真实的地址:
我如下写:
$url="http://www.163.com/";
$text=~s/<([^<>]*?)src="[^(http:\/\/|ftp:\/\/|https:\/\/)](.*?)"([^<>]*?)>/<$1src="$url$3"$4>/ig;
但是出现了两个问题:
1、src=""中引号内的内容出现了匹配问题
2、Use of uninitialized value in concatenation (.) or string at file.pm
请教各位高手阿。
$url =
$url = "http://www.163.com/";
$protocols = qr{http|ftp|https};
$text =~ s{(<[^<>]*src=")($protocols://.*)?(.*"[^<>]*>)}{$2 ? "$1$2$3" : "$1$url$3"}egi;