in reply to figuring difference in times?

Let's use the Date::Manip module.

use Date::Manip; ($weeks,$days,$hours,$minutes,$seconds) = Delta_Format($timespan . "s", 0, qw"%wh %dv %hv %mv %sd");

Or, using technology from the future (compared to your question)

use Date::Manip 6.13; my $deltao = Date::Manip::Delta->new($timespan . "s"); ($weeks,$days,$hours,$minutes,$seconds) = $deltao->printf(qw"%www %ddd %hhh %mmm %sss");