# Create a SQLEngine wrapper around your existing connection my $sqldb = DBIx::SQLEngine->new( $dbh ); # Get an array of hashes my $extracted = $sqldb->fetch_select( sql => <<'/' ); SELECT extracted_ads_id, prop_street_no, prop_street_name FROM extracted_ads_tbl WHERE pin-on-off=0 / # Build a hash of arrays mapping ad_ids to property info my %extracted = map { $_->{extracted_ads_id} => [ $_->{prop_street_no}, $_->{prop_street_name} ] } @$extracted; # ... now build your web requests and hash of PINs my %pin_results = ...; # Do inserts for each resulting record foreach my $ads_id ( keys %pin_results ) { $sqldb->do_insert( sql => [ <<'/', $ads_id, $pin_results{$ads_id} ] ); INSERT INTO enhanced_ads_tbl (enhanced_ad_id,extracted_ads_id,pin) VALUES (NULL,?,?) / }