use Date::Calc qw(Delta_DHMS); my $string1 = '12:34:26'; my $string2 = '14:48:52'; my @time1 = split /:/, $string1; my @time2 = split /:/, $string2; my @fakeday = (2000,1,1); # Let's assume you don't want different days print join(':', (Delta_DHMS(@fakeday,@time1, @fakeday,@time2))[1..3] ); __END__