首先我们要知道一个基本知识,在Perl中我们可以用$1,$2,$3获取在字符串中第一个圆括号,第二个圆括号和第三个圆括号中的内容,以此类推。比如:
$example = "this is an example";
$example =~ /(\w+)W+(\w+)W+(\w+)W+(\w+)/;
这里$1,$2,$3和$4就分别获值为"this","is","an"及"example"。
下面回到正题,设想有这样一个问题,比如有这样一个链接(偷懒一下直接拷贝):
http://www.blogger.com/post-edit.g?blogID=259409908328568382&postID=6183172999248333738
我们想要获得blogID和postID怎么办?当然可以用上面的办法分别把blogID和postID赋值给$1和$2然后再处理。但是我们还有更好的方法:
$link = "http://www.blogger.com/post-edit.g?blogID=259409908328568382&postID=6183172999248333738";
($blogID, $postID) = $link =~ /\?blogID=(\d+)&postID=(\d+)$/;
这样一下程序就更简洁,可读性也大大提高。
还有一点要注意,如果我们只需要上例中的postID,可以这样写:
($postID) = $link =~ /postID=(\d+)$/;
$postID外面的圆括号一定不要忘记,否则我们就不能获得正确的数值。试想一下,如果不加$postID外面的圆括号会有什么结果?
$postID = $link =~ /postID=(\d+)$/;
(答案见评论)
3/08/2009
Subscribe to:
Post Comments (Atom)
$postID将只会赋值为1!
ReplyDelete