use strict; use warnings; use Time::HiRes qw(tv_interval gettimeofday); use Hook::LexWrap; use LWP::UserAgent; use Data::Dumper; my $start; my @timer_list; my $timer = {}; wrap LWP::UserAgent::request, pre => \&start_timer, post => \&stop_timer, ; ### Now any LWP calls that use the subroutine ### LWP::UserAgent::request will be timed my $agent = LWP::UserAgent->new(timeout => 30); my $site = 'http://www.perlmonks.org/'; my $response = HTTP::Request->new(GET => $site); my $page = $agent->request($response); $page = $agent->request($response); $page = $agent->request($response); $page = $agent->request($response); $page = $agent->request($response); ### After doing some LWP work, dump the results: print Dumper(\@timer_list); sub start_timer { $start = [gettimeofday]; } sub stop_timer { $timer->{interval} = tv_interval ($start, [gettimeofday]); push @timer_list, $timer; $timer = {}; };