sub handle_requests { my ($agent, $requests, @params) = @_; my @requests; if (ref $requests eq 'ARRAY') { @requests = @$requests; } elsif (ref $requests eq 'CODE') { @requests = $requests->(@params); } for (@requests) { my $uri = URI->new($_->{uri}); $uri->query_form($_->{params}); print "Request: $uri\n"; my $response = $agent->get($uri); unless ($response->is_success) { die $response->status_line; } for (@{ $_->{responses} }) { if (my @groups = $response->content =~ $_->{content_pattern}) { my $name = $_->{name} || "Matched $_->{content_pattern}"; print "Response: $name\n"; handle_requests($agent, $_->{requests}, @groups); } } } }