use strict; use constant BASE => 10000; print diff("00:17:12.0001", "23:18:09.0001");#this result would be meaningless and wrong, if it's 23 of today, and 00 of tomorrow. But this is not an implementation thing, the request is a little bit ... sub diff { my ($t1, $t2) = @_; my ($h1, $m1, $s1, $ss1) = ($t1 =~ m/(\d+):(\d+):(\d+)\.(\d+)/); my ($h2, $m2, $s2, $ss2) = ($t2 =~ m/(\d+):(\d+):(\d+)\.(\d+)/); return (($h2 - $h1) * 3600 + ($m2 - $m1) * 60 + $s2 - $s1) * BASE + $ss2 - $ss1; }