Code:
$
$
$ cat exitwithtimeout.txt
Day,Start Date,Start Time,End Date,End Time,Queue,Issue
Mon,07 Nov 2016,09:12:48 EST,07 Nov 2016,09:13:41 EST,2041,EXITWITHTIMEOUT,30
Mon,07 Nov 2016,09:16:42 EST,07 Nov 2016,09:17:41 EST,2081,EXITWITHTIMEOUT,30
Mon,07 Nov 2016,09:39:15 EST,07 Nov 2016,09:40:11 EST,2041,EXITWITHTIMEOUT,30
Mon,07 Nov 2016,10:17:11 EST,07 Nov 2016,10:17:41 EST,2081,EXITWITHTIMEOUT,30
Thu,17 Nov 2016,10:06:07 EST,17 Nov 2016,10:06:59 EST,2031,EXITWITHTIMEOUT,30
$
$ cat ringnoanswer.txt
Day,Start Date,Start Time,End Date,End Time,Queue,Operator,Issue,WaitTime
Mon,07 Nov 2016,09:12:48 EST,07 Nov 2016,09:13:10 EST,2041,Djamila Millien,RINGNOANSWER,20000
Mon,07 Nov 2016,09:32:19 EST,07 Nov 2016,09:32:41 EST,2041,Djamila Millien,RINGNOANSWER,20000
Mon,07 Nov 2016,09:35:48 EST,07 Nov 2016,09:36:11 EST,2021,Kimberly Paz,RINGNOANSWER,20000
Mon,07 Nov 2016,09:39:15 EST,07 Nov 2016,09:39:40 EST,2041,Djamila Millien,RINGNOANSWER,20000
Mon,07 Nov 2016,10:17:11 EST,07 Nov 2016,10:17:41 EST,2081,Deidra Wright,RINGNOANSWER,20000
Thu,17 Nov 2016,10:05:53 EST,17 Nov 2016,10:06:29 EST,2021,Traci Dingman,RINGNOANSWER,20000
$
$ cat -n compare_datetimes.pl
1 #!/usr/bin/perl -w
2 use strict;
3 use DateTime;
4
5 my %mth = qw(Jan 1 Feb 2 Mar 3 Apr 4 May 5 Jun 6
6 Jul 7 Aug 8 Sep 9 Oct 10 Nov 11 Dec 12);
7 my (@ewt_arr, @token, @sdt, @sts, @edt, @ets);
8 my $ewt_file = $ARGV[0];
9 my $rna_file = $ARGV[1];
10
11 # Read the exitwithtimeout file, parse and store the start and
12 # end datetimes in the ewt_arr array.
13 open(FH, "<", $ewt_file) or die "Can't open $ewt_file : $!";
14 while (<FH>) {
15 next if $. == 1;
16 chomp(@token = split(/,/, $_));
17 @sdt = split(/ /, $token[1]);
18 $sdt[1] = $mth{$sdt[1]};
19 @sts = split(/[: ]/, $token[2]);
20
21 @edt = split(/ /, $token[3]);
22 $edt[1] = $mth{$edt[1]};
23 @ets = split(/[: ]/, $token[4]);
24
25 push (@ewt_arr, [ DateTime->new(
26 year => $sdt[2],
27 month => $sdt[1],
28 day => $sdt[0],
29 hour => $sts[0],
30 minute => $sts[1],
31 second => $sts[2]
32 ),
33 DateTime->new(
34 year => $edt[2],
35 month => $edt[1],
36 day => $edt[0],
37 hour => $ets[0],
38 minute => $ets[1],
39 second => $ets[2]
40 )
41 ]);
42
43 }
44 close(FH) or die "Can't close $ewt_file : $!";
45
46 # Read the ringnoanswer file, capture the start and end datetimes
47 # and compare with each element of ewt_arr array. If there is an
48 # overlap, then print Queue, Operator and WaitTime values.
49 printf("%-10s %-20s %s\n", "RNA Queue","RNA Operator","RNA WaitTime");
50 open(FH, "<", $rna_file) or die "Can't open $rna_file : $!";
51 while (<FH>) {
52 next if $. == 1;
53 chomp(@token = split(/,/, $_));
54 @sdt = split(/ /, $token[1]);
55 $sdt[1] = $mth{$sdt[1]};
56 @sts = split(/[: ]/, $token[2]);
57
58 @edt = split(/ /, $token[3]);
59 $edt[1] = $mth{$edt[1]};
60 @ets = split(/[: ]/, $token[4]);
61
62 my $sdate = DateTime->new(
63 year => $sdt[2],
64 month => $sdt[1],
65 day => $sdt[0],
66 hour => $sts[0],
67 minute => $sts[1],
68 second => $sts[2]
69 );
70 my $edate = DateTime->new(
71 year => $edt[2],
72 month => $edt[1],
73 day => $edt[0],
74 hour => $ets[0],
75 minute => $ets[1],
76 second => $ets[2]
77 );
78 foreach my $item (@ewt_arr) {
79 if ( DateTime->compare($edate, $item->[0]) >= 0 and
80 DateTime->compare($sdate, $item->[1]) <= 0 ) {
81 printf("%-10s %-20s %s\n", $token[5], $token[6], $token[8]);
82 }
83 }
84 }
85 close(FH) or die "Can't close $rna_file $!";
86
$
$ perl compare_datetimes.pl exitwithtimeout.txt ringnoanswer.txt
RNA Queue RNA Operator RNA WaitTime
2041 Djamila Millien 20000
2041 Djamila Millien 20000
2081 Deidra Wright 20000
2021 Traci Dingman 20000
$
$