Time::SoFar - Perl module to calculate run time
use Time::SoFar qw( runtime runinterval figuretimes ); # [...] denotes optional arguments $times = runtime( [$no_optimize] ); @times = runtime( [$no_optimize] ); $times = runinterval( [$no_optimize] ); @times = runinterval( [$no_optimize] ); $times = figuretimes( $seconds [, $no_optimize] ); @times = figuretimes( $seconds [, $no_optimize] );
my $elapsed = runtime(); print "Elapsed time $elapsed\n"; # prints, eg, "Elapsed time 17:34\n" my $sincethen = runinterval(1); print "Time since then $sincethen\n"; # prints, eg, "Time since then 0:00:00:51\n" ($day, $hour, $min, $sec) = figuretimes(86400 + 2*3600 + 3*60 + 4, 1); # $day = 1; $hour = 2; $min = 3; $sec = 4; @times = figuretimes(2*3600 + 3*60 + 4); # @times = (2, 3, 4) @times = figuretimes(17,1); # @times = (0, 0, 0, 17) $times = figuretimes(2*3600 + 3*60 + 4, 1); # $times = '0:02:03:04';
Time::SoFar has two functions for calculating how long a script has been running.
runtime() always works from the time the script was started (using $^T).
runinterval() works from the last time
runinterval() was called (or since the start of the script).
figuretimes() to render a raw number of seconds into component time units. Both take an optional boolean argument that gets passed to
figuretimes() to influence its output.
In an array context
figuretimes() returns the timecomponents as an array, in a scalar context it returns those components as a : delimited string. The default behaviour is to optimize away 0 output from the longer period end of the output, leaving a minimum of minutes:seconds. This is good for arrays that will be passed to
join(), but not so good for a list of variables, so this behaviour can be disabled by using a true value for $no_optimize.
Time::SoFar inherits only from Exporter.
Time::SoFar has a granularity of seconds, and is therefore not so useful for small elapsed times.
Only stock perl modules are used.
So long as $^T and
time() are calculated using the same epoch there should be no operating system dependence.
$^T in perlvar.
Copyright 2000 by Eli the Bearded / Benjamin Elijah Griffin. Released under the same license(s) as Perl.
Eli the Bearded wrote this to do away with all the $^T one liners at the end of his batch processing scripts.