#!/usr/bin/perl use Time::Local; print l(timelocal(0,15,17,24,3,102) - time()), "\n"; sub l { ($t, $r) = @_; return $r unless $t; %u = qw(day 86400 hour 3600 minute 60 second 1); foreach (sort keys %u) { if ($a = int($t / $u{$_})) { $p = $a==1 ? "" : "s"; return l($t % $u{$_}, join(", ", grep { $_ } ($r, "$a $_$p"))); }}}