Guest User

Untitled

a guest
Dec 3rd, 2014
278
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Perl 0.76 KB | None | 0 0
  1. package Timer;
  2.  
  3. use Time::HiRes qw(gettimeofday tv_interval);
  4. use Mojo::Base -base;
  5. use experimental 'signatures', 'postderef';
  6.  
  7. # keep an internal event log
  8. has '_event_log' => sub { [] };
  9.  
  10. has '_start_time' => sub { [ gettimeofday ] };
  11.  
  12. sub record ($self, $event_description) {
  13.  
  14.     # record the event and timestamp
  15.     my $event = {
  16.         timestamp       =>  sprintf("%.3f", tv_interval($self->_start_time)),
  17.         description     =>  $event_description,
  18.     };
  19.  
  20.     push($self->event_log->@*, $event);
  21.  
  22. }
  23.  
  24. # render a full report
  25. sub report ($self) {
  26.  
  27.     my $report = '';
  28.     foreach my $event ($self->_event_log->@*) {
  29.         $report .= '[' . $event->{timestamp} . '] ' . $event->{description} . "\n";
  30.     }
  31.     return $report;
  32.  
  33. }
  34.  
  35. 1;
Advertisement
Add Comment
Please, Sign In to add comment