use warnings; use strict; my $ctx = {}; run($ctx); stop($ctx); stats($ctx); sub run { my ($ctx) = @_; $ctx->{start} = time; sleep 2; } sub stop { my ($ctx) = @_; $ctx->{end} = time; } sub stats { my ($ctx) = @_; $ctx->{runtime} = $ctx->{end} - $ctx->{start}; print "Start: ".gmtime($ctx->{start})." UTC\n"; print " Stop: ".gmtime($ctx->{end})." UTC\n"; print " Time: ".$ctx->{runtime}." s\n"; } __END__ Start: Thu May 19 07:29:27 2016 UTC Stop: Thu May 19 07:29:29 2016 UTC Time: 2 s