A new module I wrote, Time::Duration, is entering CPAN, with
version 1.01.
This is an exerpt from the POD:
NAME
Time::Duration -- rounded or exact English expression of durations
SYNOPSIS
Example use in a program that ends by noting its runtime:
my $start_time = time();
use Time::Duration;
# then things that take all that time, and then ends:
print "Runtime ", duration(time() - $start_time), ".\n";
Example use in a program that reports age of a file:
use Time::Duration;
my $file = 'that_file';
my $age = $^T - (stat($file))[9]; # 9 = modtime
print "$file was modified ", ago($age);
DESCRIPTION
This module provides functions for expressing durations in rounded
or exact terms.
In the first example in the Synopsis, using
duration($interval_seconds):
If the `time() - $start_time' is 3 seconds, this prints "Runtime:
3 seconds.". If it's 0 seconds, it's "Runtime: 0 seconds.". If
it's 1 second, it's "Runtime: 1 second.". If it's 125 seconds, you
get "Runtime: 2 minutes and 5 seconds.". If it's 3820 seconds
(which is exactly 1h, 3m, 40s), you get it rounded to fit within
two expressed units: "Runtime: 1 hour and 4 minutes.". Using
duration_exact instead would return "Runtime: 1 hour, 3 minutes,
and 40 seconds".
In the second example in the Synopsis, using
ago($interval_seconds):
If the $age is 3 seconds, this prints "*file* was modified 3
seconds ago". If it's 0 seconds, it's "*file* was modified just
now", as a special case. If it's 1 second, it's "from 1 second
ago". If it's 125 seconds, you get "*file* was modified 2 minutes
and 5 seconds ago". If it's 3820 seconds (which is exactly 1h, 3m,
40s), you get it rounded to fit within two expressed units:
"*file* was modified 1 hour and 4 minutes ago". Using ago_exact
instead would return "*file* was modified 1 hour, 3 minutes, and
40 seconds ago". And if the file's modtime is, surprisingly, three
seconds into the future, $age is -3, and you'll get the equally
and appropriately surprising "*file* was modified 3 seconds from
now."
[sniption]
--
Sean M. Burke [EMAIL PROTECTED] http://www.spinn.net/~sburke/