1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53
|
open(my $fh, '<', $file) or die "Could not open '$file' $!\n";
my ($start, $end, $srv, $proc, $data);
my %h;
for (<$fh>) {
chomp;
($start, $end, $srv, $proc, $data) = split ';';
if ($start le $datev){
$start = "$datev 00:00";
}
if ($end eq "-- :"){
$end = "$datev 23:59";
}
$h{$srv}{$proc}{$data}= [] unless exists $h{$srv}{$proc}{$data};
push $h{$srv}{$proc}{$data}, [$start, $end];
}
close($fh);
my $day = (split ' ', $start)[0];
my $dt;
my @dt_spn;
my ($hours, $minutes);
my $dt_format = "%s %02d:%02d";
for (my $m = 0; $m < 1440; $m += 5) {
$minutes = $m%60;
$hours = $m/60;
@dt_spn = ( sprintf($dt_format, $datev, $hours, $minutes),
sprintf($dt_format, $datev, $hours, $minutes + 4) );
for $srv (sort keys %h) {
for $proc (sort keys $h{$srv}) {
say join ';', ($dt_spn[0],'300', $data, $srv, $proc, is_running(\@dt_spn, $h{$srv}{$proc}{$data}));
}
}
}
sub is_running {
my ($dt_spn, $spns) = @_;
for my $span (@$spns) {
return 1 if ($dt_spn->[0] le $span->[1] and $dt_spn->[1] ge $span->[0]);
}
return 0;
} |