#!/usr/bin/perl -w =pod 命名捕获--给匹配上的内容加上标签 捕获到的内容都会保存在%+散列中,这个散列的key为对应的标签; 方便之处就是利于程序扩展和阅读,不用繁琐的一个一个去数括号来获取匹配变量 =cut zjtest7-frontend:/root/perl# cat a2.pl use strict; my $str = "jack and rose"; if ($str =~ /(?<first>S+) (and|or) (?<second>S+)/) { my ($first, $second) = ($+{first}, $+{second}); print "$first $second "; # jack, rose } zjtest7-frontend:/root/perl# perl a2.pl jack rose s 空格,和 [ f] 语法一样 s+ 和 [ f]+ 一样 S 非空格,和 [^ f] 语法一样 S+ 和 [^ f]+ 语法一样 /****************************************************** zjtest7-frontend:/root/perl# cat a1.pl my $str="begin 123.456 end"; if ($str =~/(?<first>S+)s+(?<second>S+)s+(?<third>S+)/) { my ($first, $second,$third) = ($+{first}, $+{second},$+{third}); print "$first $second $third "; # jack, rose } zjtest7-frontend:/root/perl# perl a1.pl begin 123.456 end zjtest7-frontend:/root/perl# cat a3.pl my $str="begin 123.456 end"; if ($str =~/s+(?<request_time>d+(?:.d+)?)s+/){ my ($request_time) = ($+{request_time}); print $request_time." ";}; zjtest7-frontend:/root/perl# perl a3.pl 123.456