foreach my $subfile(glob "*:*")
{
print "opening $subfile\n";
push(@files,File::Tail->new(name=>"$subfile",debug=>$debug));
}
while (1)
{
($nfound,$timeleft,@pending)= File::Tail::select(undef,undef,undef,$timeout,@files);
unless ($nfound)
{
# timeout - do something else here, if you need to
}
else
{
foreach (@pending)
{
print $_->{"input"}." (".localtime(time).") ".$_-> read;
}
}
}
@pending 行为是什么?如果结果显示如下...
TCP:34628-80(2011 年 3 月 30 日星期三 01:49:57)03/30-01:49:50.607858 119.40.116.196:80 -> 192.168.242.133:34628 TCP:34628-80(2011 年 3 月 30 日星期三 01:49:57) TCP TTL:128 TOS:0x0 ID:34869 IpLen:20 DgmLen:40 TCP:34629-80(2011 年 3 月 30 日星期三 01:49:57)03/30-01:49:51.309716 119.40.116.196:80 -> 192.168.242.133:34629 UDP:41415-53(2011 年 3 月 30 日星期三 01:49:57)03/30-01:49:47.220999 192.168.242.2:53 -> 192.168.242.133:41415 UDP:44705-53(2011 年 3 月 30 日星期三 01:49:57)03/30-01:49:47.427011 192.168.242.2:53 -> 192.168.242.133:44705 UDP:50539-53(2011 年 3 月 30 日星期三 01:49:57)03/30-01:49:47.213455 192.168.242.2:53 -> 192.168.242.133:50539 TCP:34628-80(2011 年 3 月 30 日星期三 01:49:57)***AP**F Seq:0x2F3E700A Ack:0x2359814F Win:0xFAF0 TcpLen:20 TCP:34629-80(2011 年 3 月 30 日星期三 01:49:57) TCP TTL:128 TOS:0x0 ID:34871 IpLen:20 DgmLen:40 UDP:41415-53(2011 年 3 月 30 日星期三 01:49:57)UDP TTL:128 TOS:0x0 ID:34859 IpLen:20 DgmLen:65 UDP:44705-53(2011 年 3 月 30 日星期三 01:49:57) UDP TTL:128 TOS:0x0 ID:34861 IpLen:20 DgmLen:153 UDP:50539-53(2011 年 3 月 30 日星期三 01:49:57)UDP TTL:128 TOS:0x0 ID:34857 IpLen:20 DgmLen:179 TCP:34628-80(2011 年 3 月 30 日星期三 01:49:57)=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+ =+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+ TCP:34629-80(2011 年 3 月 30 日星期三 01:49:57)***AP**F Seq:0x9D70418 Ack:0x248089DB Win:0xFAF0 TcpLen:20 UDP:41415-53(2011 年 3 月 30 日星期三 01:49:57) 长度:37 UDP:44705-53(2011 年 3 月 30 日星期三 01:49:57) 长度:125 UDP:50539-53(2011 年 3 月 30 日星期三 01:49:57) 长度:151 TCP:34628-80(2011 年 3 月 30 日星期三 01:49:57) TCP:34629-80(2011 年 3 月 30 日星期三 01:49:57)=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+ =+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
@pending 不是会逐行存储数据吗?如何修改代码以仅检索 IP 地址?在我看来,我认为我可以使用 split() 将行逐字分解..所以任何人可以给我一些例子