※ 引述《lalelee (Yes We Can !)》之铭言:
: 标题: [问题] IP比对
: 时间: Fri Jun 12 17:43:04 2015
:
: 我有一个IIS Log 大概长得像这样:
: 2015-06-05 05:41:36 W3SVC1 172.16.18.11 GET /Menu/index.htm - 80 -
: 172.16.13.74 Mozill/4.0 ..... \n
: 我用
: while(<FILE>){
: if($_ =~ /(\d+\.\d+\.\d+\.\d+)/g){
: ...}
use Regexp::Common qw[net] ;
my $IPv4_pat = $RE{net}{IPv4} ; #默认是comma saparated Decimal 其他还有
# Hex, Oct.. IPv6的版本也有
if ( @matched = $_ =~ m/\b ($IPv4_pat) \b/gx) {
.... #第二个会放在 $matched[1] 里面
}
=======
:
: 但都只能比对到第一个IP "172.16.18.11" ,但我希望比对到的是"172.16.13.74" 后面这
: 个,请问要怎样改比较好呢 ?
: 推 herculus6502: if改成while 06/12 18:08
要延续在scalar context继续处理可以考虑搭配 c modifier一起用, 就是 m/.../gc
这部份就是和目前比对到的 pos 比较有关系