Thank you. It worked
#!/volume/perl/bin/perl
use warnings;
use strict;
use DateTime::Duration;
my $first = "00:00:01:04";
my $last = "00:00:08:861";
sub my_parse_duration {
my $in = shift;
my %t;
@t{qw/hours minutes seconds nanoseconds/}
= $in=~/\A(\d\d):(\d\d):(\d\d):(\d\d\d?)\z/
or die "failed to parse '$in'";
$t{nanoseconds}*=1000000; # ms->ns
return DateTime::Duration->new(%t);
}
sub my_fmt_duration {
my @t = shift->in_units('hours','minutes','seconds','nanoseconds')
+;
$t[3]/=1000000; # ns->ms
return sprintf("%02d:%02d:%02d:%03d",@t);
}
$first = my_parse_duration($first);
$last = my_parse_duration($last );
$last->subtract_duration($first);
print my_fmt_duration($last ),"\n";