sub on_return { my ($self, $request, $response, $entry) = @_; .....Do some work, process data, register regex'd urls...... $self->discard_entry($entry); #### sub discard_entry { my ($self, $entry) = @_; LWP::Debug::trace("($entry)") if $entry; # Entries are added to ordpend_connections in $self->register: # push (@{$self->{'ordpend_connections'}}, $entry); # # the reason we even maintain this ordered list is that # currently the user can change the "in_order" flag any # time, even if we already started 'wait'ing. my $entries = $self->{ordpend_connections}; @$entries = grep $_ != $entry, @$entries; $entries = $self->{entries_by_requests}; delete @$entries{grep $entries->{$_} == $entry, keys %$entries}; $entries = $self->{entries_by_sockets}; delete @$entries{grep $entries->{$_} == $entry, keys %$entries}; return; }