Beefy Boxes and Bandwidth Generously Provided by pair Networks
Syntactic Confectionery Delight
 
PerlMonks  

Re: Epoch based parser

by Perlbotics (Archbishop)
on Aug 09, 2013 at 11:14 UTC ( [id://1048747]=note: print w/replies, xml ) Need Help??


in reply to Epoch based parser

Seems you want your HH:MM (localtime or GMT?) to match within the given range?

use strict; use warnings; use JSON; use Time::Local; my ($hh, $mm) = (15, 20); # 15:20 while ( my $data = <DATA> ) { my $struct = from_json( $data ); if ( my @res = filter_data_hh_mm( $struct, $hh, $mm ) ) { # ... do something print "Matches: $hh:$mm: [ " .gmtime( $_->[0] ) . ".." . gmtime( +$_->[1] ) . " ]\n" for ( @res ); } } sub filter_data_hh_mm { my ($struct, $hh, $mm) = @_; my @res; for my $line ( @{ $struct->{aaData} } ) { # match if begin is before begin-day HH:MM:59 and # if end is after end-day HH:MM:00 if ( $line->[0] <= epoch_at_hhmmss( $line->[0], $hh, $mm , 59) and epoch_at_hhmmss( $line->[1], $hh, $mm , 0) <= $line->[1] ) { push @res, $line; } } return @res; # matching lines or () } sub epoch_at_hhmmss { my ( $epoch, $hh, $mm, $ss ) = @_; #-- use localtime(), timelocal() if $hh:$mm is in localtime # or adjust $hh:$mm to UTC/GMT accordingly my @epoch0 = gmtime( $epoch ); @epoch0[0..2] = ($ss, $mm, $hh); return timegm( @epoch0 ); } __DATA__ {"DisplayRecords":"12","Records":"12","sColumns":"startTime,endTime,re +moteNode,srcIP,srcPort,destIP,destPort,egress,ingress","aaData":[["13 +75976271","1375976430","LAN","D0:05:FE","172.20.30.2",1093,"172.20.28 +.2",1330,"1034,348","0,0"],["1375976246","1375976404","LAN","D0:05:FE +","172.20.30.2",1092,"172.20.28.2",1327,"1034,348","0,0"],["137597619 +1","1375976381","LAN","D0:05:FE","172.20.30.2",1091,"172.20.28.2",132 +4,"1034,348","0,0"],["1375976171","1375976314","LAN","D0:05:FE","172. +20.30.2",1090,"172.20.28.2",1321,"1034,348","0,0"],["1375976144","137 +5976302","LAN","D0:05:FE","172.20.30.2",1089,"172.20.28.2",1319,"1034 +,348","0,0"],["1375975155","1375976089","LAN","D0:05:FE","172.20.30.2 +",1085,"172.20.28.2",1278,"1034,348","0,0"],["1375975194","1375975352 +","LAN","D0:05:FE","172.20.30.2",1086,"172.20.28.2",1281,"1034,348"," +0,0"],["1375974693","1375974835","LAN","D0:05:FE","172.20.30.2",1083, +"172.20.28.2",1271,"1034,348","0,0"],["1375974668","1375974827","LAN" +,"D0:05:FE","172.20.30.2",1081,"172.20.28.2",1268,"1034,348","0,0"],[ +"1375974691","1375974821","LAN","D0:05:FE","172.20.30.2",1082,"172.20 +.28.2",1270,"0,0","0,0"],["1375881371","1375881561","LAN","D0:05:FE", +"172.20.30.2",1055,"172.20.28.2",1122,"1034,348","0,0"],["1375881410" +,"1375881540","LAN","E0:05:AE","172.20.30.2",1056,"172.20.28.2",1125, +"0,0","0,0"]]}

Result:

Matches: 15:20: [ Thu Aug 8 15:19:15 2013..Thu Aug 8 15:34:49 2013 +] Matches: 15:20: [ Thu Aug 8 15:19:54 2013..Thu Aug 8 15:22:32 2013 +]

Replies are listed 'Best First'.
Re^2: Epoch based parser
by spikeinc (Acolyte) on Aug 09, 2013 at 18:58 UTC
    This is great too! am combining all your inputs and trying to make it work. thanks so much for all your help.

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://1048747]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others lurking in the Monastery: (3)
As of 2024-04-24 05:43 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found